You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vk...@apache.org on 2015/03/04 22:58:28 UTC

[20/21] incubator-ignite git commit: IGNITE-141 - Marshallers refactoring

IGNITE-141 - Marshallers refactoring


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

Branch: refs/heads/ignite-141
Commit: 114b0d61038ae7810d7ca52af998de4e8e127f5c
Parents: 019f05e
Author: Valentin Kulichenko <vk...@gridgain.com>
Authored: Wed Mar 4 13:56:14 2015 -0800
Committer: Valentin Kulichenko <vk...@gridgain.com>
Committed: Wed Mar 4 13:56:14 2015 -0800

----------------------------------------------------------------------
 .../ignite/internal/classnames.properties       |  8 +-
 .../managers/communication/GridIoManager.java   | 85 +++++++++-----------
 2 files changed, 44 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/114b0d61/modules/core/src/main/java/org/apache/ignite/internal/classnames.properties
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/classnames.properties b/modules/core/src/main/java/org/apache/ignite/internal/classnames.properties
index be997ba..def4e59 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/classnames.properties
+++ b/modules/core/src/main/java/org/apache/ignite/internal/classnames.properties
@@ -21,12 +21,16 @@
 [F
 [I
 [J
-[Lorg.apache.ignite.lang.IgnitePredicate;
 [Ljava.lang.Object;
-[Lorg.apache.ignite.lang.IgniteFuture;
+[Ljava.lang.StackTraceElement;
+[Ljava.lang.String;
+[Lorg.apache.ignite.internal.processors.cache.GridCacheAttributes;
 [Lorg.apache.ignite.lang.IgniteBiTuple;
+[Lorg.apache.ignite.lang.IgniteFuture;
+[Lorg.apache.ignite.lang.IgnitePredicate;
 [S
 [Z
+
 java.lang.AbstractMethodError
 java.lang.ArithmeticException
 java.lang.ArrayIndexOutOfBoundsException

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/114b0d61/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
index 3b8eabd..de85182 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
@@ -140,6 +140,9 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
     /** */
     private MessageFormatter formatter;
 
+    /** Stopping flag. */
+    private boolean stopping;
+
     /**
      * @param ctx Grid kernal context.
      */
@@ -389,61 +392,46 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
     /** {@inheritDoc} */
     @SuppressWarnings("BusyWait")
     @Override public void onKernalStop0(boolean cancel) {
-//        // No more communication messages.
-//        getSpi().setListener(null);
-//
-//        busyLock.writeLock();
-//
-//        U.shutdownNow(getClass(), affPool, log);
-//
-//        boolean interrupted = false;
-//
-//        while (workersCnt.sum() != 0) {
-//            try {
-//                Thread.sleep(200);
-//            }
-//            catch (InterruptedException ignored) {
-//                interrupted = true;
-//            }
-//        }
-//
-//        if (interrupted)
-//            Thread.currentThread().interrupt();
-//
-//        GridEventStorageManager evtMgr = ctx.event();
-//
-//        if (evtMgr != null && discoLsnr != null)
-//            evtMgr.removeLocalEventListener(discoLsnr);
-    }
-
-    /** {@inheritDoc} */
-    @Override public void stop(boolean cancel) throws IgniteCheckedException {
         // No more communication messages.
         getSpi().setListener(null);
 
-        busyLock.writeLock();
-
-        U.shutdownNow(getClass(), affPool, log);
-
         boolean interrupted = false;
 
-        while (workersCnt.sum() != 0) {
+        // Busy wait is intentional.
+        while (true) {
             try {
-                Thread.sleep(200);
+                if (busyLock.tryWriteLock(200, TimeUnit.MILLISECONDS))
+                    break;
+                else
+                    Thread.sleep(200);
             }
-            catch (InterruptedException ignored) {
+            catch (InterruptedException ignore) {
+                // Preserve interrupt status & ignore.
+                // Note that interrupted flag is cleared.
                 interrupted = true;
             }
         }
 
-        if (interrupted)
-            Thread.currentThread().interrupt();
+        try {
+            if (interrupted)
+                Thread.currentThread().interrupt();
+
+            U.shutdownNow(getClass(), affPool, log);
 
-        GridEventStorageManager evtMgr = ctx.event();
+            GridEventStorageManager evtMgr = ctx.event();
 
-        if (evtMgr != null && discoLsnr != null)
-            evtMgr.removeLocalEventListener(discoLsnr);
+            if (evtMgr != null && discoLsnr != null)
+                evtMgr.removeLocalEventListener(discoLsnr);
 
+            stopping = true;
+        }
+        finally {
+            busyLock.writeUnlock();
+        }
+    }
+
+    /** {@inheritDoc} */
+    @Override public void stop(boolean cancel) throws IgniteCheckedException {
         stopSpi();
 
         // Clear cache.
@@ -463,14 +451,17 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
         assert nodeId != null;
         assert msg != null;
 
-        if (!busyLock.tryReadLock()) {
-            if (log.isDebugEnabled())
-                log.debug("Received communication message while stopping grid.");
-
-            return;
-        }
+        busyLock.readLock();
 
         try {
+            if (stopping) {
+                if (log.isDebugEnabled())
+                    log.debug("Received communication message while stopping (will ignore) [nodeId=" +
+                        nodeId + ", msg=" + cacheMsg + ']');
+
+                return;
+            }
+
             // Check discovery.
             ClusterNode node = ctx.discovery().node(nodeId);