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