Repository: ignite
Updated Branches:
  refs/heads/ignite-zk 8bf6a2242 -> e790a8e5c


zk


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

Branch: refs/heads/ignite-zk
Commit: e790a8e5cebe8c18a6e0a81f0ff5b2663785fcdc
Parents: 8bf6a22
Author: sboikov <[email protected]>
Authored: Wed Nov 29 16:08:00 2017 +0300
Committer: sboikov <[email protected]>
Committed: Wed Nov 29 16:11:16 2017 +0300

----------------------------------------------------------------------
 .../zk/internal/ZookeeperDiscoveryImpl.java          | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/e790a8e5/modules/core/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java
index 5886a23..e848551 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java
@@ -30,6 +30,7 @@ import java.util.UUID;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.atomic.AtomicBoolean;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteClientDisconnectedException;
 import org.apache.ignite.IgniteException;
@@ -134,6 +135,9 @@ public class ZookeeperDiscoveryImpl {
     /** */
     private ZkEventWorker evtWorker;
 
+    /** */
+    private final AtomicBoolean stop = new AtomicBoolean();
+
     /**
      * @param log Logger.
      * @param zkRootPath Zookeeper base path node all nodes.
@@ -468,9 +472,9 @@ public class ZookeeperDiscoveryImpl {
             throw new IgniteSpiException("Failed to initialize Zookeeper 
nodes", e);
         }
         finally {
-            connStartLatch.countDown();
-
             busyLock.leaveBusy();
+
+            connStartLatch.countDown();
         }
     }
 
@@ -1452,6 +1456,9 @@ public class ZookeeperDiscoveryImpl {
      * @throws InterruptedException If interrupted.
      */
     private void stop0(Throwable e) throws InterruptedException {
+        if (!stop.compareAndSet(false, true))
+            return;
+
         log.info("Stop ZookeeperDiscovery [nodeId=" + locNode.id() + ", err=" 
+ e + ']');
 
         connState = ConnectionState.STOPPED;
@@ -1813,12 +1820,12 @@ public class ZookeeperDiscoveryImpl {
 
         /** {@inheritDoc} */
         @Override public void processResult(int rc, String path, Object ctx, 
byte[] data, Stat stat) {
-            assert state.crd;
-
             if (!busyLock.enterBusy())
                 return;
 
             try {
+                assert state.crd;
+
                 processResult0(rc, path, data);
 
                 busyLock.leaveBusy();

Reply via email to