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);