Repository: ignite
Updated Branches:
  refs/heads/ignite-2.5 76e293654 -> 49f11db72


IGNITE-8159 control.sh: Fixed NPE on adding nodes on empty baseline and not 
active cluster.

(cherry picked from commit 834869c)


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

Branch: refs/heads/ignite-2.5
Commit: 49f11db727febc83297c7f0f5de9e6f98f0197fa
Parents: 76e2936
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:37:13 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/49f11db7/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/49f11db7/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.

Reply via email to