sp-3-p1 protected ping by busy lock

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

Branch: refs/heads/ignite-478
Commit: ba96cba6cd20a03a7659e91748a8ccfa2858773a
Parents: 63faf7f
Author: Yakov Zhdanov <yzhda...@gridgain.com>
Authored: Fri Apr 17 16:27:34 2015 +0300
Committer: Yakov Zhdanov <yzhda...@gridgain.com>
Committed: Fri Apr 17 16:27:34 2015 +0300

----------------------------------------------------------------------
 .../managers/discovery/GridDiscoveryManager.java     | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ba96cba6/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index 9f74b83..3ad1594 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -173,6 +173,9 @@ public class GridDiscoveryManager extends 
GridManagerAdapter<DiscoverySpi> {
     /** Map of dynamic cache filters. */
     private Map<String, CachePredicate> registeredCaches = new HashMap<>();
 
+    /** */
+    private final GridSpinBusyLock busyLock = new GridSpinBusyLock();
+
     /** @param ctx Context. */
     public GridDiscoveryManager(GridKernalContext ctx) {
         super(ctx, ctx.config().getDiscoverySpi());
@@ -914,6 +917,8 @@ public class GridDiscoveryManager extends 
GridManagerAdapter<DiscoverySpi> {
 
     /** {@inheritDoc} */
     @Override public void stop(boolean cancel) throws IgniteCheckedException {
+        busyLock.block();
+
         // Stop receiving notifications.
         getSpi().setListener(null);
 
@@ -973,7 +978,15 @@ public class GridDiscoveryManager extends 
GridManagerAdapter<DiscoverySpi> {
     public boolean pingNode(UUID nodeId) {
         assert nodeId != null;
 
-        return getSpi().pingNode(nodeId);
+        if (!busyLock.enterBusy())
+            return false;
+
+        try {
+            return getSpi().pingNode(nodeId);
+        }
+        finally {
+            busyLock.leaveBusy();
+        }
     }
 
     /**

Reply via email to