Repository: ignite Updated Branches: refs/heads/master b97b1eec4 -> 834869c2a
IGNITE-8159 control.sh: Fixed NPE on adding nodes on empty baseline and not active cluster. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/834869c2 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/834869c2 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/834869c2 Branch: refs/heads/master Commit: 834869c2ac7897c8891cd1dca537488230191ab6 Parents: b97b1ee Author: Alexey Kuznetsov <akuznet...@apache.org> Authored: Mon Apr 9 09:25:50 2018 +0700 Committer: Alexey Kuznetsov <akuznet...@apache.org> Committed: Mon Apr 9 09:25:50 2018 +0700 ---------------------------------------------------------------------- .../visor/baseline/VisorBaselineTask.java | 24 ++++++----- .../ignite/util/GridCommandHandlerTest.java | 43 ++++++++++++++++++++ 2 files changed, 56 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/834869c2/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTask.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTask.java index 56c2dd9..721b4b3 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTask.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTask.java @@ -71,10 +71,10 @@ public class VisorBaselineTask extends VisorOneNodeTask<VisorBaselineTaskArg, Vi Collection<? extends BaselineNode> baseline = cluster.currentBaselineTopology(); - Collection<? extends BaselineNode> servers = cluster.forServers().nodes(); + Collection<? extends BaselineNode> srvrs = cluster.forServers().nodes(); - return new VisorBaselineTaskResult(ignite.active(), cluster.topologyVersion(), - F.isEmpty(baseline) ? null : baseline, servers); + return new VisorBaselineTaskResult(ignite.cluster().active(), cluster.topologyVersion(), + F.isEmpty(baseline) ? null : baseline, srvrs); } /** @@ -93,12 +93,14 @@ public class VisorBaselineTask extends VisorOneNodeTask<VisorBaselineTaskArg, Vi * @return Current baseline. */ private Map<String, BaselineNode> currentBaseLine() { - Collection<BaselineNode> baseline = ignite.cluster().currentBaselineTopology(); - Map<String, BaselineNode> nodes = new HashMap<>(); - for (BaselineNode node : baseline) - nodes.put(node.consistentId().toString(), node); + Collection<BaselineNode> baseline = ignite.cluster().currentBaselineTopology(); + + if (!F.isEmpty(baseline)) { + for (BaselineNode node : baseline) + nodes.put(node.consistentId().toString(), node); + } return nodes; } @@ -122,12 +124,12 @@ public class VisorBaselineTask extends VisorOneNodeTask<VisorBaselineTaskArg, Vi * @return New baseline. */ private VisorBaselineTaskResult set(List<String> consistentIds) { - Map<String, BaselineNode> servers = currentServers(); + Map<String, BaselineNode> srvrs = currentServers(); Collection<BaselineNode> baselineTop = new ArrayList<>(); for (String consistentId : consistentIds) { - BaselineNode node = servers.get(consistentId); + BaselineNode node = srvrs.get(consistentId); if (node == null) throw new IllegalStateException("Node not found for consistent ID: " + consistentId); @@ -146,10 +148,10 @@ public class VisorBaselineTask extends VisorOneNodeTask<VisorBaselineTaskArg, Vi */ private VisorBaselineTaskResult add(List<String> consistentIds) { Map<String, BaselineNode> baseline = currentBaseLine(); - Map<String, BaselineNode> servers = currentServers(); + Map<String, BaselineNode> srvrs = currentServers(); for (String consistentId : consistentIds) { - BaselineNode node = servers.get(consistentId); + BaselineNode node = srvrs.get(consistentId); if (node == null) throw new IllegalStateException("Node not found for consistent ID: " + consistentId); http://git-wip-us.apache.org/repos/asf/ignite/blob/834869c2/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java b/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java index d5051d7..eb18e29 100644 --- a/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java +++ b/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java @@ -17,7 +17,9 @@ package org.apache.ignite.util; +import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.PrintStream; import java.util.ArrayList; import java.util.Arrays; import org.apache.ignite.Ignite; @@ -62,6 +64,11 @@ public class GridCommandHandlerTest extends GridCommonAbstractTest { } /** {@inheritDoc} */ + @Override public String getTestIgniteInstanceName() { + return "bltTest"; + } + + /** {@inheritDoc} */ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception { IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName); @@ -76,6 +83,8 @@ public class GridCommandHandlerTest extends GridCommonAbstractTest { dsCfg.setWalMode(WALMode.LOG_ONLY); dsCfg.getDefaultDataRegionConfiguration().setPersistenceEnabled(true); + cfg.setConsistentId(igniteInstanceName); + return cfg; } @@ -206,6 +215,40 @@ public class GridCommandHandlerTest extends GridCommonAbstractTest { } /** + * Test baseline add items works via control.sh + * + * @throws Exception If failed. + */ + public void testBaselineAddOnNotActiveCluster() throws Exception { + try { + Ignite ignite = startGrid(1); + + assertFalse(ignite.cluster().active()); + + String consistentIDs = getTestIgniteInstanceName(1); + + ByteArrayOutputStream out = new ByteArrayOutputStream(4096); + System.setOut(new PrintStream(out)); + + assertEquals(EXIT_CODE_UNEXPECTED_ERROR, execute("--baseline", "add", consistentIDs)); + + assertTrue(out.toString().contains("Changing BaselineTopology on inactive cluster is not allowed.")); + + consistentIDs = + getTestIgniteInstanceName(1) + ", " + + getTestIgniteInstanceName(2) + "," + + getTestIgniteInstanceName(3); + + assertEquals(EXIT_CODE_UNEXPECTED_ERROR, execute("--baseline", "add", consistentIDs)); + + assertTrue(out.toString().contains("Node not found for consistent ID: bltTest2")); + } + finally { + System.setOut(System.out); + } + } + + /** * Test baseline remove works via control.sh * * @throws Exception If failed.