You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ir...@apache.org on 2020/01/20 17:25:04 UTC
[ignite] branch master updated: IGNITE-12460 Cluster fails to find
the node by consistent ID - Fixes #7151.
This is an automated email from the ASF dual-hosted git repository.
irakov 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 6668d86 IGNITE-12460 Cluster fails to find the node by consistent ID - Fixes #7151.
6668d86 is described below
commit 6668d86ad48b4fee3bda8c9e813df33bcaec2947
Author: Anton Kalashnikov <ka...@yandex.ru>
AuthorDate: Mon Jan 20 20:24:24 2020 +0300
IGNITE-12460 Cluster fails to find the node by consistent ID - Fixes #7151.
Signed-off-by: Ivan Rakov <ir...@apache.org>
---
.../internal/visor/baseline/VisorBaselineTask.java | 14 ++++++---
.../apache/ignite/util/GridCommandHandlerTest.java | 36 +++++++++++++++++++---
2 files changed, 40 insertions(+), 10 deletions(-)
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 4173775..d06ebff 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
@@ -26,7 +26,6 @@ import java.util.Map;
import org.apache.ignite.IgniteException;
import org.apache.ignite.cluster.BaselineNode;
import org.apache.ignite.cluster.ClusterNode;
-import org.apache.ignite.internal.cluster.DetachedClusterNode;
import org.apache.ignite.internal.cluster.IgniteClusterEx;
import org.apache.ignite.internal.processors.cluster.baseline.autoadjust.BaselineAutoAdjustStatus;
import org.apache.ignite.internal.processors.task.GridInternal;
@@ -143,17 +142,22 @@ public class VisorBaselineTask extends VisorOneNodeTask<VisorBaselineTaskArg, Vi
* @return New baseline.
*/
private VisorBaselineTaskResult set(List<String> consistentIds) {
+ Map<String, BaselineNode> baseline = currentBaseLine();
Map<String, BaselineNode> srvrs = currentServers();
Collection<BaselineNode> baselineTop = new ArrayList<>();
for (String consistentId : consistentIds) {
- BaselineNode node = srvrs.get(consistentId);
+ if (srvrs.containsKey(consistentId))
+ baselineTop.add(srvrs.get(consistentId));
+
+ else if (baseline.containsKey(consistentId))
+ baselineTop.add(baseline.get(consistentId));
- if (node != null)
- baselineTop.add(node);
else
- baselineTop.add(new DetachedClusterNode(consistentId, null));
+ throw new IllegalArgumentException(
+ "Check arguments. Node not found for consistent ID: " + consistentId
+ );
}
return set0(baselineTop);
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 ee770e5..a9c8620 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,9 +17,6 @@
package org.apache.ignite.util;
-import javax.cache.processor.EntryProcessor;
-import javax.cache.processor.EntryProcessorException;
-import javax.cache.processor.MutableEntry;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
@@ -44,6 +41,9 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
+import javax.cache.processor.EntryProcessor;
+import javax.cache.processor.EntryProcessorException;
+import javax.cache.processor.MutableEntry;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteAtomicSequence;
import org.apache.ignite.IgniteCache;
@@ -642,7 +642,33 @@ public class GridCommandHandlerTest extends GridCommandHandlerClusterPerMethodAb
assertEquals(2, ignite.cluster().currentBaselineTopology().size());
- assertEquals(EXIT_CODE_UNEXPECTED_ERROR, execute("--baseline", "set", "invalidConsistentId"));
+ assertEquals(EXIT_CODE_INVALID_ARGUMENTS, execute("--baseline", "set", "invalidConsistentId"));
+ }
+
+ /**
+ * Test baseline set nodes with baseline offline node works via control.sh
+ *
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testBaselineSetWithOfflineNode() throws Exception {
+ Ignite ignite0 = startGrid(0);
+ //It is important to set consistent id to null for force autogeneration.
+ Ignite ignite1 = startGrid(optimize(getConfiguration(getTestIgniteInstanceName(1)).setConsistentId(null)));
+
+ assertFalse(ignite0.cluster().active());
+
+ ignite0.cluster().active(true);
+
+ Ignite other = startGrid(2);
+
+ String consistentIds = consistentIds(ignite0, ignite1, other);
+
+ ignite1.close();
+
+ assertEquals(EXIT_CODE_OK, execute("--baseline", "set", consistentIds));
+
+ assertEquals(3, ignite0.cluster().currentBaselineTopology().size());
}
/**
@@ -1901,7 +1927,7 @@ public class GridCommandHandlerTest extends GridCommandHandlerClusterPerMethodAb
ignite(0).createCache(defaultCacheConfiguration().setNodeFilter(
(IgnitePredicate<ClusterNode>)node -> node.attribute("some-attr") != null));
- assertEquals(EXIT_CODE_UNEXPECTED_ERROR,
+ assertEquals(EXIT_CODE_INVALID_ARGUMENTS,
execute("--baseline", "set", "non-existing-node-id ," + consistentIds(ignite)));
}