# IGNITE-709 Implement SEGMENTATION behaviour correctly.

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

Branch: refs/heads/ignite-709_2
Commit: 5fc945e1a93e7703b8d19ac27c2a2c30661593d2
Parents: 98aa2f6
Author: sevdokimov <sergey.evdoki...@jetbrains.com>
Authored: Sat May 2 18:32:39 2015 +0300
Committer: sevdokimov <sergey.evdoki...@jetbrains.com>
Committed: Sat May 2 18:32:39 2015 +0300

----------------------------------------------------------------------
 .../discovery/tcp/TcpClientDiscoverySpi.java    |  8 +++++-
 .../tcp/TcpClientDiscoverySelfTest.java         | 26 +++++++++++++++++---
 2 files changed, 29 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5fc945e1/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
index 0ac67ec..f246155 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
@@ -377,7 +377,13 @@ public class TcpClientDiscoverySpi extends 
TcpDiscoverySpiAdapter implements Tcp
 
     /** {@inheritDoc} */
     @Override public void disconnect() throws IgniteSpiException {
-        throw new UnsupportedOperationException();
+        U.interrupt(msgWorker);
+        U.interrupt(sockWriter);
+        U.interrupt(sockReader);
+
+        U.join(msgWorker, log);
+        U.join(sockWriter, log);
+        U.join(sockReader, log);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5fc945e1/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySelfTest.java
index 5811ba0..db3d666 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySelfTest.java
@@ -30,6 +30,7 @@ import org.apache.ignite.spi.discovery.tcp.ipfinder.*;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
 import org.apache.ignite.testframework.*;
 import org.apache.ignite.testframework.junits.common.*;
+import org.jetbrains.annotations.*;
 
 import java.net.*;
 import java.util.*;
@@ -324,12 +325,29 @@ public class TcpClientDiscoverySelfTest extends 
GridCommonAbstractTest {
 
         attachListeners(2, 2);
 
-        failServer(2);
+        final CountDownLatch client2StoppedLatch = new CountDownLatch(1);
 
-        await(srvFailedLatch);
-        await(clientFailedLatch);
+        IgnitionListener lsnr = new IgnitionListener() {
+            @Override public void onStateChange(@Nullable String name, 
IgniteState state) {
+                if (state == IgniteState.STOPPED_ON_SEGMENTATION)
+                    client2StoppedLatch.countDown();
+            }
+        };
+        G.addListener(lsnr);
 
-        checkNodes(2, 2);
+        try {
+            failServer(2);
+
+            await(srvFailedLatch);
+            await(clientFailedLatch);
+
+            await(client2StoppedLatch);
+
+            checkNodes(2, 2);
+        }
+        finally {
+            G.removeListener(lsnr);
+        }
     }
 
     /**

Reply via email to