This is an automated email from the ASF dual-hosted git repository. sboikov pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push: new bcf8118 ignite-11108 ZK discovery: call both methods SpiContext.validateNode bcf8118 is described below commit bcf8118574c9e9d86ad585c4785ad7a3726ee07a Author: sboikov <sboi...@apache.org> AuthorDate: Wed Jan 30 10:50:42 2019 +0300 ignite-11108 ZK discovery: call both methods SpiContext.validateNode --- .../zk/internal/ZookeeperDiscoveryImpl.java | 10 +++- .../zk/internal/ZookeeperDiscoveryMiscTest.java | 65 +++++++++++++++++++--- 2 files changed, 63 insertions(+), 12 deletions(-) diff --git a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java index 544168f..f57d8b1 100644 --- a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java +++ b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java @@ -2006,11 +2006,15 @@ public class ZookeeperDiscoveryImpl { if (res.err != null) return res; - DiscoveryDataBag joiningNodeBag = new DiscoveryDataBag(node.id(), joiningNodeData.node().isClient()); + IgniteNodeValidationResult err = spi.getSpiContext().validateNode(node); - joiningNodeBag.joiningNodeData(joiningNodeData.discoveryData()); + if (err == null) { + DiscoveryDataBag joiningNodeBag = new DiscoveryDataBag(node.id(), joiningNodeData.node().isClient()); - IgniteNodeValidationResult err = spi.getSpiContext().validateNode(node, joiningNodeBag); + joiningNodeBag.joiningNodeData(joiningNodeData.discoveryData()); + + err = spi.getSpiContext().validateNode(node, joiningNodeBag); + } if (err != null) { LT.warn(log, err.message()); diff --git a/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryMiscTest.java b/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryMiscTest.java index fa8c7ec..deab1ea 100644 --- a/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryMiscTest.java +++ b/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryMiscTest.java @@ -31,7 +31,10 @@ import javax.management.MBeanServer; import javax.management.ObjectName; import org.apache.ignite.Ignite; import org.apache.ignite.IgniteCheckedException; +import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction; import org.apache.ignite.cluster.ClusterNode; +import org.apache.ignite.configuration.CacheConfiguration; +import org.apache.ignite.configuration.IgniteConfiguration; import org.apache.ignite.internal.IgniteEx; import org.apache.ignite.internal.SecurityCredentialsAttrFilterPredicate; import org.apache.ignite.internal.processors.security.SecurityContext; @@ -59,6 +62,19 @@ import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_SECURITY_SUBJ * Tests for Zookeeper SPI discovery. */ public class ZookeeperDiscoveryMiscTest extends ZookeeperDiscoverySpiTestBase { + /** */ + private CacheConfiguration ccfg; + + /** {@inheritDoc} */ + @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception { + IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName); + + if (ccfg != null) + cfg.setCacheConfiguration(ccfg); + + return cfg; + } + /** * Verifies that node attributes returned through public API are presented in standard form. * @@ -320,6 +336,24 @@ public class ZookeeperDiscoveryMiscTest extends ZookeeperDiscoverySpiTestBase { } /** + * Checks ZookeeperDiscovery call {@link org.apache.ignite.internal.GridComponent#validateNode(ClusterNode)}. + * + * @throws Exception If failed. + */ + @Test + public void testNodeValidation() throws Exception { + ccfg = new CacheConfiguration("validate-test-cache"); + ccfg.setAffinity(new ValidationTestAffinity()); + + startGrid(0); + + ccfg = new CacheConfiguration("validate-test-cache"); + ccfg.setAffinity(new ValidationTestAffinity()); + + checkStartFail(1, "Failed to add node to topology because it has the same hash code"); + } + + /** * @throws Exception If failed. */ @Test @@ -327,16 +361,18 @@ public class ZookeeperDiscoveryMiscTest extends ZookeeperDiscoverySpiTestBase { auth = ZkTestNodeAuthenticator.factory(getTestIgniteInstanceName(1), getTestIgniteInstanceName(5)); + String expErr = "Authentication failed"; + startGrid(0); checkTestSecuritySubject(1); { helper.clientMode(false); - checkStartFail(1); + checkStartFail(1, expErr); helper.clientMode(true); - checkStartFail(1); + checkStartFail(1, expErr); helper.clientMode(false); } @@ -357,7 +393,7 @@ public class ZookeeperDiscoveryMiscTest extends ZookeeperDiscoverySpiTestBase { checkTestSecuritySubject(1); - checkStartFail(1); + checkStartFail(1, expErr); helper.clientMode(false); @@ -373,19 +409,20 @@ public class ZookeeperDiscoveryMiscTest extends ZookeeperDiscoverySpiTestBase { checkTestSecuritySubject(4); - checkStartFail(1); - checkStartFail(5); + checkStartFail(1, expErr); + checkStartFail(5, expErr); helper.clientMode(true); - checkStartFail(1); - checkStartFail(5); + checkStartFail(1, expErr); + checkStartFail(5, expErr); } /** * @param nodeIdx Node index. + * @param expMsg Expected error message. */ - private void checkStartFail(final int nodeIdx) { + private void checkStartFail(final int nodeIdx, String expMsg) { Throwable err = GridTestUtils.assertThrows(log, new Callable<Void>() { @Override public Void call() throws Exception { startGrid(nodeIdx); @@ -397,7 +434,7 @@ public class ZookeeperDiscoveryMiscTest extends ZookeeperDiscoverySpiTestBase { IgniteSpiException spiErr = X.cause(err, IgniteSpiException.class); assertNotNull(spiErr); - assertTrue(spiErr.getMessage().contains("Authentication failed")); + assertTrue(spiErr.getMessage(), spiErr.getMessage().contains(expMsg)); } /** @@ -446,6 +483,16 @@ public class ZookeeperDiscoveryMiscTest extends ZookeeperDiscoverySpiTestBase { waitForTopology(5); } + /** + * + */ + private static class ValidationTestAffinity extends RendezvousAffinityFunction { + /** {@inheritDoc} */ + @Override public Object resolveNodeHash(ClusterNode node) { + return 0; + } + } + /** */ private static class C1 implements Serializable { // No-op.