You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by se...@apache.org on 2014/12/23 21:36:33 UTC

[50/53] [abbrv] incubator-ignite git commit: Ignite - Moved changes (GG-9591)

Ignite - Moved changes (GG-9591)


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/a6fad326
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/a6fad326
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/a6fad326

Branch: refs/heads/ignite-gg9499
Commit: a6fad3261625aea1689818250f6e362e79b70ffb
Parents: 3f25425
Author: nikolay_tikhonov <nt...@gridgain.com>
Authored: Tue Dec 23 12:38:50 2014 +0300
Committer: nikolay_tikhonov <nt...@gridgain.com>
Committed: Tue Dec 23 12:42:45 2014 +0300

----------------------------------------------------------------------
 .../org/gridgain/grid/kernal/GridKernal.java    |  4 +
 .../java/org/gridgain/grid/util/GridUtils.java  | 87 ++++++++++++++------
 .../gridgain/grid/util/GridTestClockTimer.java  | 31 +++++++
 .../testframework/junits/GridAbstractTest.java  |  8 ++
 4 files changed, 105 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a6fad326/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernal.java b/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernal.java
index 99821ca..5359353 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernal.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernal.java
@@ -655,6 +655,8 @@ public class GridKernal extends ClusterGroupAdapter implements GridEx, IgniteMBe
 
             nodeLoc = new ClusterNodeLocalMapImpl(ctx);
 
+            U.onGridStart();
+
             // Set context into rich adapter.
             setKernalContext(ctx);
 
@@ -2096,6 +2098,8 @@ public class GridKernal extends ClusterGroupAdapter implements GridEx, IgniteMBe
                     }
                 }
             }
+
+            U.onGridStop();
         }
         else {
             // Proper notification.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a6fad326/modules/core/src/main/java/org/gridgain/grid/util/GridUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/util/GridUtils.java b/modules/core/src/main/java/org/gridgain/grid/util/GridUtils.java
index fb7955d..b687a31 100644
--- a/modules/core/src/main/java/org/gridgain/grid/util/GridUtils.java
+++ b/modules/core/src/main/java/org/gridgain/grid/util/GridUtils.java
@@ -255,7 +255,7 @@ public abstract class GridUtils {
     private static InetAddress locHost;
 
     /** */
-    private static volatile long curTimeMillis = System.currentTimeMillis();
+    static volatile long curTimeMillis = System.currentTimeMillis();
 
     /** Primitive class map. */
     private static final Map<String, Class<?>> primitiveMap = new HashMap<>(16, .5f);
@@ -284,6 +284,15 @@ public abstract class GridUtils {
     /** GridGain Work Directory. */
     public static final String GRIDGAIN_WORK_DIR = System.getenv(GG_WORK_DIR);
 
+    /** Clock timer. */
+    private static Thread timer;
+
+    /** Grid counter. */
+    private static int gridCnt;
+
+    /** Mutex. */
+    private static final Object mux = new Object();
+
     /**
      * Initializes enterprise check.
      */
@@ -498,30 +507,6 @@ public abstract class GridUtils {
             }
         }
 
-        Thread timer = new Thread(new Runnable() {
-            @SuppressWarnings({"BusyWait", "InfiniteLoopStatement"})
-            @Override public void run() {
-                while (true) {
-                    curTimeMillis = System.currentTimeMillis();
-
-                    try {
-                        Thread.sleep(10);
-                    }
-                    catch (InterruptedException ignored) {
-                        U.log(null, "Timer thread has been interrupted.");
-
-                        break;
-                    }
-                }
-            }
-        }, "gridgain-clock");
-
-        timer.setDaemon(true);
-
-        timer.setPriority(10);
-
-        timer.start();
-
         PORTABLE_CLS.add(Byte.class);
         PORTABLE_CLS.add(Short.class);
         PORTABLE_CLS.add(Integer.class);
@@ -2046,6 +2031,58 @@ public abstract class GridUtils {
     }
 
     /**
+     * Starts clock timer if grid is first.
+     */
+    public static void onGridStart() {
+        synchronized (mux) {
+            if (gridCnt == 0) {
+                timer = new Thread(new Runnable() {
+                    @SuppressWarnings({"BusyWait", "InfiniteLoopStatement"})
+                    @Override public void run() {
+                        while (true) {
+                            curTimeMillis = System.currentTimeMillis();
+
+                            try {
+                                Thread.sleep(10);
+                            }
+                            catch (InterruptedException ignored) {
+                                U.log(null, "Timer thread has been interrupted.");
+
+                                break;
+                            }
+                        }
+                    }
+                }, "gridgain-clock");
+
+                timer.setDaemon(true);
+
+                timer.setPriority(10);
+
+                timer.start();
+            }
+
+            ++gridCnt;
+        }
+    }
+
+    /**
+     * Stops clock timer if all nodes into JVM were stopped.
+     */
+    public static void onGridStop(){
+        synchronized (mux) {
+            assert gridCnt > 0 : gridCnt;
+
+            --gridCnt;
+
+            if (gridCnt == 0 && timer != null) {
+                timer.interrupt();
+
+                timer = null;
+            }
+        }
+    }
+
+    /**
      * Copies input byte stream to output byte stream.
      *
      * @param in Input byte stream.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a6fad326/modules/core/src/test/java/org/gridgain/grid/util/GridTestClockTimer.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/gridgain/grid/util/GridTestClockTimer.java b/modules/core/src/test/java/org/gridgain/grid/util/GridTestClockTimer.java
new file mode 100644
index 0000000..9cbe308
--- /dev/null
+++ b/modules/core/src/test/java/org/gridgain/grid/util/GridTestClockTimer.java
@@ -0,0 +1,31 @@
+/* @java.file.header */
+
+/*  _________        _____ __________________        _____
+ *  __  ____/___________(_)______  /__  ____/______ ____(_)_______
+ *  _  / __  __  ___/__  / _  __  / _  / __  _  __ `/__  / __  __ \
+ *  / /_/ /  _  /    _  /  / /_/ /  / /_/ /  / /_/ / _  /  _  / / /
+ *  \____/   /_/     /_/   \_,__/   \____/   \__,_/  /_/   /_/ /_/
+ */
+
+package org.gridgain.grid.util;
+
+/**
+ * Clock timer for tests.
+ */
+public class GridTestClockTimer implements Runnable {
+    /** {@inheritDoc} */
+    @Override public void run() {
+        while (true) {
+            GridUtils.curTimeMillis = System.currentTimeMillis();
+
+            try {
+                Thread.sleep(10);
+            }
+            catch (InterruptedException ignored) {
+                GridUtils.log(null, "Timer thread has been interrupted.");
+
+                break;
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a6fad326/modules/core/src/test/java/org/gridgain/testframework/junits/GridAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/gridgain/testframework/junits/GridAbstractTest.java b/modules/core/src/test/java/org/gridgain/testframework/junits/GridAbstractTest.java
index 570bc77..922acc4 100644
--- a/modules/core/src/test/java/org/gridgain/testframework/junits/GridAbstractTest.java
+++ b/modules/core/src/test/java/org/gridgain/testframework/junits/GridAbstractTest.java
@@ -88,6 +88,14 @@ public abstract class GridAbstractTest extends TestCase {
 
     static {
         System.setProperty(IgniteSystemProperties.GG_ATOMIC_CACHE_DELETE_HISTORY_SIZE, "10000");
+        
+        Thread timer = new Thread(new GridTestClockTimer(), "gridgain-clock-for-tests");
+
+        timer.setDaemon(true);
+
+        timer.setPriority(10);
+
+        timer.start();
     }
 
     /** */