Repository: ignite Updated Branches: refs/heads/ignite-zk 885703386 -> 58bc7b97e
zk Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ebfec4dd Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ebfec4dd Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ebfec4dd Branch: refs/heads/ignite-zk Commit: ebfec4ddd6c6403963a8602c0f18858ef6f54f42 Parents: 8544122 Author: sboikov <sboi...@gridgain.com> Authored: Thu Dec 21 16:51:53 2017 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Thu Dec 21 18:00:26 2017 +0300 ---------------------------------------------------------------------- .../spi/discovery/zk/ZookeeperDiscoverySpi.java | 93 +++++++++++++++----- .../zk/internal/ZookeeperDiscoveryImpl.java | 14 +-- .../ZookeeperDiscoverySpiBasicTest.java | 60 +++++++++++-- .../testframework/junits/GridAbstractTest.java | 4 +- 4 files changed, 134 insertions(+), 37 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfec4dd/modules/core/src/main/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpi.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpi.java index aaf761f..559a1db 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpi.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpi.java @@ -72,15 +72,21 @@ public class ZookeeperDiscoverySpi extends IgniteSpiAdapter implements Discovery /** */ @GridToStringInclude - private String zkConnectionString; + private String zkRootPath = DFLT_ROOT_PATH; /** */ @GridToStringInclude - private int sesTimeout; + private String zkConnectionString; + + /** */ + private long joinTimeout; /** */ @GridToStringInclude - private String zkRootPath = DFLT_ROOT_PATH; + private long sesTimeout; + + /** */ + private boolean clientReconnectDisabled; /** */ @GridToStringExclude @@ -92,7 +98,7 @@ public class ZookeeperDiscoverySpi extends IgniteSpiAdapter implements Discovery /** */ @GridToStringExclude - DiscoverySpiNodeAuthenticator nodeAuth; + private DiscoverySpiNodeAuthenticator nodeAuth; /** */ @GridToStringExclude @@ -123,15 +129,19 @@ public class ZookeeperDiscoverySpi extends IgniteSpiAdapter implements Discovery private IgniteLogger log; /** */ - private boolean clientReconnectDisabled; - - /** */ private IgniteDiscoverySpiInternalListener internalLsnr; + /** + * @return Base path in ZK for znodes created by SPI. + */ public String getZkRootPath() { return zkRootPath; } + /** + * @param zkRootPath Base path in ZooKeeper for znodes created by SPI. + * @return {@code this} for chaining. + */ @IgniteSpiConfiguration(optional = true) public ZookeeperDiscoverySpi setZkRootPath(String zkRootPath) { this.zkRootPath = zkRootPath; @@ -139,21 +149,53 @@ public class ZookeeperDiscoverySpi extends IgniteSpiAdapter implements Discovery return this; } - public int getSessionTimeout() { + /** + * @return ZooKeeper session timeout. + */ + public long getSessionTimeout() { return sesTimeout; } + /** + * @param sesTimeout ZooKeeper session timeout. + * @return {@code this} for chaining. + */ @IgniteSpiConfiguration(optional = true) - public ZookeeperDiscoverySpi setSessionTimeout(int sesTimeout) { + public ZookeeperDiscoverySpi setSessionTimeout(long sesTimeout) { this.sesTimeout = sesTimeout; return this; } + /** + * @return Cluster join timeout. + */ + public long getJoinTimeout() { + return joinTimeout; + } + + /** + * @param joinTimeout Cluster join timeout ({@code 0} means wait forever). + * @return {@code this} for chaining. + */ + @IgniteSpiConfiguration(optional = true) + public ZookeeperDiscoverySpi setJoinTimeout(long joinTimeout) { + this.joinTimeout = joinTimeout; + + return this; + } + + /** + * @return ZooKeeper connection string + */ public String getZkConnectionString() { return zkConnectionString; } + /** + * @param zkConnectionString ZooKeeper connection string + * @return {@code this} for chaining. + */ @IgniteSpiConfiguration(optional = false) public ZookeeperDiscoverySpi setZkConnectionString(String zkConnectionString) { this.zkConnectionString = zkConnectionString; @@ -174,10 +216,13 @@ public class ZookeeperDiscoverySpi extends IgniteSpiAdapter implements Discovery * Sets client reconnect disabled flag. * * @param clientReconnectDisabled Client reconnect disabled flag. + * @return {@code this} for chaining. */ @IgniteSpiConfiguration(optional = true) - public void setClientReconnectDisabled(boolean clientReconnectDisabled) { + public ZookeeperDiscoverySpi setClientReconnectDisabled(boolean clientReconnectDisabled) { this.clientReconnectDisabled = clientReconnectDisabled; + + return this; } /** {@inheritDoc} */ @@ -434,17 +479,6 @@ public class ZookeeperDiscoverySpi extends IgniteSpiAdapter implements Discovery impl.stop(); } - /** {@inheritDoc} */ - public Object clone() { - ZookeeperDiscoverySpi spi = new ZookeeperDiscoverySpi(); - - spi.setZkConnectionString(zkConnectionString); - spi.setSessionTimeout(sesTimeout); - spi.setClientReconnectDisabled(clientReconnectDisabled); - - return spi; - } - /** * @return Local node instance. */ @@ -484,6 +518,23 @@ public class ZookeeperDiscoverySpi extends IgniteSpiAdapter implements Discovery return locNode; } + /** + * Used for tests (call via reflection). + * + * @return Copy of SPI. + */ + private ZookeeperDiscoverySpi cloneSpiConfiguration() { + ZookeeperDiscoverySpi spi = new ZookeeperDiscoverySpi(); + + spi.setZkRootPath(zkRootPath); + spi.setZkConnectionString(zkConnectionString); + spi.setSessionTimeout(sesTimeout); + spi.setJoinTimeout(joinTimeout); + spi.setClientReconnectDisabled(clientReconnectDisabled); + + return spi; + } + /** {@inheritDoc} */ @Override public String toString() { return S.toString(ZookeeperDiscoverySpi.class, this); http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfec4dd/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 847b345..1c033c0 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 @@ -230,6 +230,13 @@ public class ZookeeperDiscoveryImpl { } /** + * @return Exception. + */ + private static IgniteClientDisconnectedCheckedException disconnectError() { + return new IgniteClientDisconnectedCheckedException(null, "Client node disconnected."); + } + + /** * @return Logger. */ IgniteLogger log() { @@ -522,13 +529,6 @@ public class ZookeeperDiscoveryImpl { } /** - * @return Exception. - */ - static IgniteClientDisconnectedCheckedException disconnectError() { - return new IgniteClientDisconnectedCheckedException(null, "Client node disconnected."); - } - - /** * @param nodeId Node ID. * @return {@code True} if node joined or joining topology. */ http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfec4dd/modules/core/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoverySpiBasicTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoverySpiBasicTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoverySpiBasicTest.java index b17d70c..57e53fc 100644 --- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoverySpiBasicTest.java +++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoverySpiBasicTest.java @@ -308,12 +308,6 @@ public class ZookeeperDiscoverySpiBasicTest extends GridCommonAbstractTest { super.beforeTestsStarted(); IgnitionEx.TEST_ZK = false; - - if (USE_TEST_CLUSTER) { - zkCluster = createTestingCluster(ZK_SRVS); - - zkCluster.start(); - } } /** @@ -363,6 +357,15 @@ public class ZookeeperDiscoverySpiBasicTest extends GridCommonAbstractTest { /** {@inheritDoc} */ @Override protected void afterTestsStopped() throws Exception { + stopZkCluster(); + + super.afterTestsStopped(); + } + + /** + * + */ + private void stopZkCluster() { if (zkCluster != null) { try { zkCluster.close(); @@ -373,8 +376,6 @@ public class ZookeeperDiscoverySpiBasicTest extends GridCommonAbstractTest { zkCluster = null; } - - super.afterTestsStopped(); } /** @@ -395,6 +396,12 @@ public class ZookeeperDiscoverySpiBasicTest extends GridCommonAbstractTest { @Override protected void beforeTest() throws Exception { super.beforeTest(); + if (USE_TEST_CLUSTER && zkCluster == null) { + zkCluster = createTestingCluster(ZK_SRVS); + + zkCluster.start(); + } + reset(); } @@ -702,6 +709,7 @@ public class ZookeeperDiscoverySpiBasicTest extends GridCommonAbstractTest { } /** + * @param expNodes Expected nodes number. * @throws Exception If failed. */ private void checkTestSecuritySubject(int expNodes) throws Exception { @@ -2502,6 +2510,42 @@ public class ZookeeperDiscoverySpiBasicTest extends GridCommonAbstractTest { } /** + * @throws Exception If failed. + */ + public void testStartNoZk() throws Exception { + stopZkCluster(); + + sesTimeout = 30_000; + + zkCluster = createTestingCluster(3); + + try { + final AtomicInteger idx = new AtomicInteger(); + + IgniteInternalFuture fut = GridTestUtils.runMultiThreadedAsync(new Callable<Void>() { + @Override public Void call() throws Exception { + startGrid(idx.getAndIncrement()); + + return null; + } + }, 5, "start-node"); + + U.sleep(5000); + + assertFalse(fut.isDone()); + + zkCluster.start(); + + fut.get(); + + waitForTopology(5); + } + finally { + zkCluster.start(); + } + } + + /** * @param dfltConsistenId Default consistent ID flag. * @throws Exception If failed. */ http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfec4dd/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java index 4b62534..1084ce1 100755 --- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java +++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java @@ -972,7 +972,9 @@ public abstract class GridAbstractTest extends TestCase { if (!(discoverySpi instanceof TcpDiscoverySpi)) { try { - Method m = discoverySpi.getClass().getMethod("clone"); + Method m = discoverySpi.getClass().getMethod("cloneSpiConfiguration"); + + m.setAccessible(true); cfg.setDiscoverySpi((DiscoverySpi)m.invoke(discoverySpi));