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

Reply via email to