Repository: ignite Updated Branches: refs/heads/ignite-zk 21a72646d -> f03aab3b2
zk Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f03aab3b Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f03aab3b Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f03aab3b Branch: refs/heads/ignite-zk Commit: f03aab3b2c330b00c164d4537a982fe05cbd9297 Parents: 21a7264 Author: sboikov <sboi...@gridgain.com> Authored: Mon Dec 11 13:00:51 2017 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Mon Dec 11 13:00:51 2017 +0300 ---------------------------------------------------------------------- .../zk/internal/ZookeeperDiscoveryImpl.java | 26 +++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/f03aab3b/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 5808c7c..744f2c9 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 @@ -31,6 +31,7 @@ import java.util.UUID; import java.util.concurrent.CountDownLatch; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.atomic.AtomicBoolean; +import org.apache.ignite.Ignite; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.IgniteClientDisconnectedException; import org.apache.ignite.IgniteException; @@ -42,6 +43,7 @@ import org.apache.ignite.events.EventType; import org.apache.ignite.internal.ClusterMetricsSnapshot; import org.apache.ignite.internal.IgniteFutureTimeoutCheckedException; import org.apache.ignite.internal.IgniteNodeAttributes; +import org.apache.ignite.internal.IgnitionEx; import org.apache.ignite.internal.events.DiscoveryCustomEvent; import org.apache.ignite.internal.managers.discovery.IgniteDiscoverySpiInternalListener; import org.apache.ignite.internal.util.GridSpinBusyLock; @@ -2293,18 +2295,34 @@ public class ZookeeperDiscoveryImpl { busyLock.leaveBusy(); if (err instanceof ZookeeperClientFailedException) - return; + return; // Processed by ZookeeperClient listener. + + Ignite ignite = spi.ignite(); - if (connState == ConnectionState.STOPPED) + if (connState == ConnectionState.STOPPED || ignite == null) return; - // TODO ZK - U.error(log, "Fatal error in ZookeeperDiscovery.", err); + U.error(log, "Fatal error in ZookeeperDiscovery. " + + "Stopping the node in order to prevent cluster wide instability.", err); onStop(); stop0(err); + new Thread(new Runnable() { + @Override public void run() { + try { + IgnitionEx.stop(igniteInstanceName, true, true); + + U.log(log, "Stopped the node successfully in response to fatal error in ZookeeperDiscoverySpi."); + } + catch (Throwable e) { + U.error(log, "Failed to stop the node successfully in response to fatal error in " + + "ZookeeperDiscoverySpi.", e); + } + } + }, "node-stop-thread").start(); + if (err instanceof Error) throw (Error)err; }