You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2019/02/04 12:56:00 UTC
[ignite] branch master updated: IGNITE-8894 Provide coordinator
information in control.sh output - Fixes #5933.
This is an automated email from the ASF dual-hosted git repository.
agoncharuk 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 be9079d IGNITE-8894 Provide coordinator information in control.sh output - Fixes #5933.
be9079d is described below
commit be9079d222da53da8ba6d0f8d1817eaf7ebddc77
Author: Sergey Kosarev <ma...@gmail.com>
AuthorDate: Mon Feb 4 15:36:29 2019 +0300
IGNITE-8894 Provide coordinator information in control.sh output - Fixes #5933.
Signed-off-by: Alexey Goncharuk <al...@gmail.com>
---
.../internal/commandline/CommandHandler.java | 23 +++++--
.../internal/commandline/GridConsoleAdapter.java | 4 +-
.../internal/visor/baseline/VisorBaselineNode.java | 25 ++++++++
.../apache/ignite/util/GridCommandHandlerTest.java | 72 ++++++++++++++++++++++
4 files changed, 117 insertions(+), 7 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
index 2a02daa..5f844a0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
@@ -30,6 +30,7 @@ import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Scanner;
import java.util.Set;
import java.util.UUID;
@@ -1296,22 +1297,34 @@ public class CommandHandler {
*/
private void baselinePrint0(VisorBaselineTaskResult res) {
log("Cluster state: " + (res.isActive() ? "active" : "inactive"));
- log("Current topology version: " + res.getTopologyVersion());
- nl();
Map<String, VisorBaselineNode> baseline = res.getBaseline();
Map<String, VisorBaselineNode> srvs = res.getServers();
+ Optional<VisorBaselineNode> crdOpt = srvs.values().stream()
+ .min(Comparator.comparing(VisorBaselineNode::getOrder));
+
+ String crdStr = crdOpt.map(
+ crd -> "ConsistentId=" + crd.getConsistentId() + ", Order=" + crd.getOrder())
+ .orElse("");
+
+ log("Current topology version: " + res.getTopologyVersion() + " (Coordinator: " + crdStr + ")");
+ nl();
+
if (F.isEmpty(baseline))
log("Baseline nodes not found.");
else {
log("Baseline nodes:");
for (VisorBaselineNode node : baseline.values()) {
- boolean online = srvs.containsKey(node.getConsistentId());
+ VisorBaselineNode srvNode = srvs.get(node.getConsistentId());
+
+ String state = ", State=" + (srvNode != null ? "ONLINE" : "OFFLINE");
+
+ String order = srvNode != null ? ", Order=" + srvNode.getOrder() : "";
- log(i("ConsistentID=" + node.getConsistentId() + ", STATE=" + (online ? "ONLINE" : "OFFLINE"), 2));
+ log(i("ConsistentId=" + node.getConsistentId() + state + order, 2));
}
log(DELIM);
@@ -1332,7 +1345,7 @@ public class CommandHandler {
log("Other nodes:");
for (VisorBaselineNode node : others)
- log(i("ConsistentID=" + node.getConsistentId(), 2));
+ log(i("ConsistentId=" + node.getConsistentId() + ", Order=" + node.getOrder(), 2));
log("Number of other nodes: " + others.size());
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/GridConsoleAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/commandline/GridConsoleAdapter.java
index 010fbe5..b66e958 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/GridConsoleAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/commandline/GridConsoleAdapter.java
@@ -38,10 +38,10 @@ public class GridConsoleAdapter implements GridConsole {
/** Constructor. */
private GridConsoleAdapter(Console delegate) {
- this.delegate = System.console();
-
if (delegate == null)
throw new NullPointerException("Console is not available.");
+
+ this.delegate = delegate;
}
/** {@inheritDoc} */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineNode.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineNode.java
index b37a364..9f4b39f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineNode.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineNode.java
@@ -22,9 +22,11 @@ import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.Map;
import org.apache.ignite.cluster.BaselineNode;
+import org.apache.ignite.internal.managers.discovery.IgniteClusterNode;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.visor.VisorDataTransferObject;
+import org.jetbrains.annotations.Nullable;
/**
* Data transfer object for {@link BaselineNode}.
@@ -39,6 +41,9 @@ public class VisorBaselineNode extends VisorDataTransferObject {
/** */
private Map<String, Object> attrs;
+ /** */
+ private @Nullable Long order;
+
/**
* Default constructor.
*/
@@ -54,6 +59,15 @@ public class VisorBaselineNode extends VisorDataTransferObject {
public VisorBaselineNode(BaselineNode node) {
consistentId = String.valueOf(node.consistentId());
attrs = node.attributes();
+
+ //Baseline topology returns instances of DetachedClusternode
+ if (node instanceof IgniteClusterNode)
+ order = ((IgniteClusterNode)node).order();
+ }
+
+ /** {@inheritDoc} */
+ @Override public byte getProtocolVersion() {
+ return V2;
}
/**
@@ -70,16 +84,27 @@ public class VisorBaselineNode extends VisorDataTransferObject {
return attrs;
}
+ /**
+ * @return Node order.
+ */
+ public @Nullable Long getOrder() {
+ return order;
+ }
+
/** {@inheritDoc} */
@Override protected void writeExternalData(ObjectOutput out) throws IOException {
U.writeString(out, consistentId);
U.writeMap(out, attrs);
+ out.writeObject(order);
}
/** {@inheritDoc} */
@Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
consistentId = U.readString(in);
attrs = U.readMap(in);
+
+ if (protoVer >= V2)
+ order = (Long)in.readObject();
}
/** {@inheritDoc} */
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 bce3c06..304bdae 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
@@ -359,6 +359,78 @@ public class GridCommandHandlerTest extends GridCommonAbstractTest {
}
/**
+ * Test baseline collect works via control.sh
+ *
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testBaselineCollectCrd() throws Exception {
+ Ignite ignite = startGrids(2);
+
+ assertFalse(ignite.cluster().active());
+
+ ignite.cluster().active(true);
+
+ injectTestSystemOut();
+
+ assertEquals(EXIT_CODE_OK, execute("--baseline", "--port", "11212"));
+
+ String crdStr = findCrdInfo();
+
+ assertEquals("(Coordinator: ConsistentId=" +
+ grid(0).cluster().localNode().consistentId() + ", Order=1)", crdStr);
+
+ stopGrid(0);
+
+ testOut.reset();
+
+ assertEquals(EXIT_CODE_OK, execute("--baseline", "--port", "11212"));
+
+ crdStr = findCrdInfo();
+
+ assertEquals("(Coordinator: ConsistentId=" +
+ grid(1).cluster().localNode().consistentId() + ", Order=2)", crdStr);
+
+ startGrid(0);
+
+ testOut.reset();
+
+ assertEquals(EXIT_CODE_OK, execute("--baseline", "--port", "11212"));
+
+ crdStr = findCrdInfo();
+
+ assertEquals("(Coordinator: ConsistentId=" +
+ grid(1).cluster().localNode().consistentId() + ", Order=2)", crdStr);
+
+ stopGrid(1);
+
+ testOut.reset();
+
+ assertEquals(EXIT_CODE_OK, execute("--baseline", "--port", "11211"));
+
+ crdStr = findCrdInfo();
+
+ assertEquals("(Coordinator: ConsistentId=" +
+ grid(0).cluster().localNode().consistentId() + ", Order=4)", crdStr);
+
+ }
+
+ /**
+ * @return utility information about coordinator
+ */
+ private String findCrdInfo() {
+ String outStr = testOut.toString();
+
+ int i = outStr.indexOf("(Coordinator: ConsistentId=");
+
+ assertTrue(i != -1);
+
+ String crdStr = outStr.substring(i);
+
+ return crdStr.substring(0, crdStr.indexOf('\n'));
+ }
+
+ /**
* @param ignites Ignites.
* @return Local node consistent ID.
*/