# 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); + } } /**