From b994b65e0831b30a3d486dfc93fa8912c3e111fe Mon Sep 17 00:00:00 2001 From: Kirill Gusakov Date: Mon, 12 Oct 2020 14:07:54 +0300 Subject: [PATCH 01/12] IGNITE-10837 Add ips of baseline nodes to control.sh --baseline --- .../internal/commandline/BaselineCommand.java | 51 ++++++++++++++- .../ignite/internal/commandline/Command.java | 16 +++++ .../internal/commandline/CommandHandler.java | 2 +- .../ignite/util/GridCommandHandlerTest.java | 64 +++++++++++++++++-- .../apache/ignite/IgniteSystemProperties.java | 9 +++ .../ignite/internal/util/IgniteUtils.java | 11 +++- .../visor/baseline/VisorBaselineNode.java | 32 +++++++++- .../baseline/VisorBaselineTaskResult.java | 43 ++++++++++++- .../internal/visor/util/VisorTaskUtils.java | 4 +- .../junits/GridAbstractTest.java | 2 + 10 files changed, 215 insertions(+), 19 deletions(-) diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java index b377b711382d8..bfeb1cff88a11 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java @@ -18,12 +18,18 @@ package org.apache.ignite.internal.commandline; import java.util.ArrayList; +import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.UUID; +import java.util.function.Function; import java.util.logging.Logger; +import java.util.stream.Collectors; +import java.util.stream.Stream; + import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; import org.apache.ignite.internal.client.GridClientNode; @@ -37,6 +43,8 @@ import org.apache.ignite.internal.visor.baseline.VisorBaselineTask; import org.apache.ignite.internal.visor.baseline.VisorBaselineTaskArg; import org.apache.ignite.internal.visor.baseline.VisorBaselineTaskResult; +import org.apache.ignite.internal.visor.util.VisorTaskUtils; +import org.jetbrains.annotations.NotNull; import static java.lang.Boolean.TRUE; import static org.apache.ignite.internal.commandline.CommandHandler.DELIM; @@ -54,6 +62,11 @@ public class BaselineCommand implements Command { /** Arguments. */ private BaselineArguments baselineArgs; + /** + * Use verbose mode for command output + */ + private @NotNull boolean verbose = false; + /** {@inheritDoc} */ @Override public void printUsage(Logger logger) { final String constistIds = "consistentId1[,consistentId2,....,consistentIdN]"; @@ -79,6 +92,19 @@ public class BaselineCommand implements Command { return null; } + /** + * @see #execute(GridClientConfiguration, Logger) + * @param clientCfg Thin client configuration if connection to cluster is necessary. + * @param logger Logger to use. + * @param verbose Use verbose mode or not + * + * @throws Exception If failed to execute baseline action. + */ + @Override public Object execute(GridClientConfiguration clientCfg, Logger logger, boolean verbose) throws Exception { + this.verbose = verbose; + return execute(clientCfg, logger); + } + /** * Change baseline. * @@ -166,13 +192,34 @@ else if (res.getRemainingTimeToBaselineAdjust() < 0) Map srvs = res.getServers(); // if task runs on a node with VisorBaselineNode of old version (V1) we'll get order=null for all nodes. + Function extractFormattedAddrs = node -> { + Stream sortedByIpHosts = + Optional.ofNullable(node) + .map(addrs -> node.getAddrs()) + .orElse(Collections.emptyList()) + .stream() + .sorted(Comparator.comparing(tuple -> new VisorTaskUtils.SortableAddress(tuple.getKey()))) + .map(addr -> { + if (!addr.getKey().equals(addr.getValue())) + return addr.getValue() + "/" + addr.getKey(); + else return addr.getKey(); + }); + + if (verbose) { + String hosts = String.join(",", sortedByIpHosts.collect(Collectors.toList())); + if (!hosts.isEmpty()) + return ", Addresses=" + hosts; + else return ""; + } else + return sortedByIpHosts.findFirst().map(ip -> ", Address=" + ip).orElse(""); + }; String crdStr = srvs.values().stream() // check for not null .filter(node -> node.getOrder() != null) .min(Comparator.comparing(VisorBaselineNode::getOrder)) // format - .map(crd -> " (Coordinator: ConsistentId=" + crd.getConsistentId() + ", Order=" + crd.getOrder() + ")") + .map(crd -> " (Coordinator: ConsistentId=" + crd.getConsistentId() + extractFormattedAddrs.apply(crd) + ", Order=" + crd.getOrder() + ")") .orElse(""); logger.info("Current topology version: " + res.getTopologyVersion() + crdStr); @@ -190,7 +237,7 @@ else if (res.getRemainingTimeToBaselineAdjust() < 0) String order = srvNode != null ? ", Order=" + srvNode.getOrder() : ""; - logger.info(DOUBLE_INDENT + "ConsistentId=" + node.getConsistentId() + state + order); + logger.info(DOUBLE_INDENT + "ConsistentId=" + node.getConsistentId() + extractFormattedAddrs.apply(srvNode) + state + order); } logger.info(DELIM); diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/Command.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/Command.java index 12f85a0e07247..fe667b0033f56 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/Command.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/Command.java @@ -186,6 +186,22 @@ public static String extendToLen(String s, int targetLen) { */ public Object execute(GridClientConfiguration clientCfg, Logger logger) throws Exception; + /** + * Actual command execution with verbose mode if needed. + * Implement it if your command supports verbose mode. + * + * @see Command#execute(GridClientConfiguration, Logger) + * + * @param clientCfg Thin client configuration if connection to cluster is necessary. + * @param logger Logger to use. + * @param verbose Use verbose mode or not + * @return Result of operation (mostly usable for tests). + * @throws Exception If error occur. + */ + default Object execute(GridClientConfiguration clientCfg, Logger logger, boolean verbose) throws Exception { + return execute(clientCfg, logger); + } + /** * Prepares confirmation for the command. * diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java index fbfc14a948324..a612e1c15102e 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java @@ -269,7 +269,7 @@ public int execute(List rawArgs) { logger.info("Arguments: " + String.join(" ", rawArgs)); logger.info(DELIM); - lastOperationRes = command.execute(clientCfg, logger); + lastOperationRes = command.execute(clientCfg, logger, args.verbose()); break; } diff --git a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java index a2ddf0b218730..4383e8f848313 100644 --- a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java +++ b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.RandomAccessFile; import java.io.Serializable; +import java.lang.reflect.Field; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; @@ -53,6 +54,7 @@ import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.IgniteDataStreamer; import org.apache.ignite.IgniteException; +import org.apache.ignite.IgniteSystemProperties; import org.apache.ignite.ShutdownPolicy; import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction; import org.apache.ignite.cluster.BaselineNode; @@ -93,6 +95,7 @@ import org.apache.ignite.internal.processors.cache.warmup.BlockedWarmUpConfiguration; import org.apache.ignite.internal.processors.cache.warmup.BlockedWarmUpStrategy; import org.apache.ignite.internal.processors.cache.warmup.WarmUpTestPluginProvider; +import org.apache.ignite.internal.util.IgniteUtils; import org.apache.ignite.internal.processors.cluster.GridClusterStateProcessor; import org.apache.ignite.internal.util.lang.GridAbsPredicate; import org.apache.ignite.internal.util.typedef.G; @@ -606,13 +609,38 @@ private void setState(Ignite ignite, ClusterState state, String strState, String */ @Test public void testBaselineCollect() throws Exception { - Ignite ignite = startGrids(1); + Ignite ignite = startGrid( + optimize(getConfiguration(getTestIgniteInstanceName(0))).setLocalHost("0.0.0.0")); + + Field addresses = ignite.cluster().node().getClass().getDeclaredField("addrs"); + addresses.setAccessible(true); + addresses.set(ignite.cluster().node(), Arrays.asList("127.0.0.1", "0:0:0:0:0:0:0:1", "10.19.112.175", "188.166.164.247")); + Field hostNames = ignite.cluster().node().getClass().getDeclaredField("hostNames"); + hostNames.setAccessible(true); + hostNames.set(ignite.cluster().node(), Arrays.asList("10.19.112.175.hostname")); assertFalse(ignite.cluster().active()); ignite.cluster().active(true); - assertEquals(EXIT_CODE_OK, execute("--baseline")); + injectTestSystemOut(); + + + { // non verbose mode + assertEquals(EXIT_CODE_OK, execute("--baseline")); + + List nodesInfo = findBaselineNodesInfo(); + assertEquals(1, nodesInfo.size()); + assertContains(log, nodesInfo.get(0), "Address=188.166.164.247.hostname/188.166.164.247, "); + } + + { // verbose mode + assertEquals(EXIT_CODE_OK, execute("--verbose", "--baseline")); + + List nodesInfo = findBaselineNodesInfo(); + assertEquals(1, nodesInfo.size()); + assertContains(log, nodesInfo.get(0), "Addresses=188.166.164.247.hostname/188.166.164.247,10.19.112.175.hostname/10.19.112.175"); + } assertEquals(1, ignite.cluster().currentBaselineTopology().size()); } @@ -637,7 +665,7 @@ public void testBaselineCollectCrd() throws Exception { String crdStr = findCrdInfo(); assertEquals("(Coordinator: ConsistentId=" + - grid(0).cluster().localNode().consistentId() + ", Order=1)", crdStr); + grid(0).cluster().localNode().consistentId() + ", Address=127.0.0.1.hostname/127.0.0.1" + ", Order=1)", crdStr); stopGrid(0); @@ -646,7 +674,7 @@ public void testBaselineCollectCrd() throws Exception { crdStr = findCrdInfo(); assertEquals("(Coordinator: ConsistentId=" + - grid(1).cluster().localNode().consistentId() + ", Order=2)", crdStr); + grid(1).cluster().localNode().consistentId() + ", Address=127.0.0.1.hostname/127.0.0.1" + ", Order=2)", crdStr); startGrid(0); @@ -655,7 +683,7 @@ public void testBaselineCollectCrd() throws Exception { crdStr = findCrdInfo(); assertEquals("(Coordinator: ConsistentId=" + - grid(1).cluster().localNode().consistentId() + ", Order=2)", crdStr); + grid(1).cluster().localNode().consistentId() + ", Address=127.0.0.1.hostname/127.0.0.1" + ", Order=2)", crdStr); stopGrid(1); @@ -664,7 +692,7 @@ public void testBaselineCollectCrd() throws Exception { crdStr = findCrdInfo(); assertEquals("(Coordinator: ConsistentId=" + - grid(0).cluster().localNode().consistentId() + ", Order=4)", crdStr); + grid(0).cluster().localNode().consistentId() + ", Address=127.0.0.1.hostname/127.0.0.1" + ", Order=4)", crdStr); } /** @@ -682,6 +710,30 @@ private String findCrdInfo() { return crdStr.substring(0, crdStr.indexOf('\n')).trim(); } + /** + * @return utility information about baseline nodes + */ + private List findBaselineNodesInfo() { + String outStr = testOut.toString(); + + int i = outStr.indexOf("Baseline nodes:"); + + assertTrue(i != -1); + + int j = outStr.indexOf("\n", i) + 1; + + int beginOfNodeDescription = -1; + + List nodesInfo = new ArrayList<>(); + + while ((beginOfNodeDescription = outStr.indexOf("ConsistentId=", j) )!= -1) { + j = outStr.indexOf("\n", beginOfNodeDescription); + nodesInfo.add(outStr.substring(beginOfNodeDescription, j).trim()); + } + + return nodesInfo; + } + /** * @param ignites Ignites. * @return Local node consistent ID. diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java index 949e9c6f6ed7c..92973888591da 100644 --- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java +++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java @@ -1935,6 +1935,15 @@ public final class IgniteSystemProperties { defaults = "" + DFLT_DUMP_TX_COLLISIONS_INTERVAL) public static final String IGNITE_DUMP_TX_COLLISIONS_INTERVAL = "IGNITE_DUMP_TX_COLLISIONS_INTERVAL"; + + /** + * Set to true only during the junit tests. + * + * Can be used for changing behaviour of tightly coupled code pieces during the tests. + * Use it as a last resort only, prefer another toolchain like DI, mocks and etc. if possible + */ + public static final String IGNITE_TEST_ENV = "IGNITE_TEST_ENV"; + /** * Enforces singleton. */ diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java index 6bdc6fab34138..e3b83c175dcdc 100755 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java @@ -9310,7 +9310,11 @@ public static Collection toInetAddresses(Collection addrs, if (!F.isEmpty(hostName)) { try { - inetAddr = InetAddress.getByName(hostName); + if (IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_TEST_ENV)) { + String ipString = hostName.substring(0, hostName.length() - ".hostname".length()); + inetAddr = InetAddress.getByAddress(hostName, InetAddress.getByName(ipString).getAddress()); + + } else inetAddr = InetAddress.getByName(hostName); } catch (UnknownHostException ignored) { } @@ -9318,7 +9322,9 @@ public static Collection toInetAddresses(Collection addrs, if (inetAddr == null || inetAddr.isLoopbackAddress()) { try { - inetAddr = InetAddress.getByName(addr); + if (IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_TEST_ENV)) + inetAddr = InetAddress.getByAddress(addr + ".hostname", InetAddress.getByName(addr).getAddress()); + else inetAddr = InetAddress.getByName(addr); } catch (UnknownHostException ignored) { } @@ -11669,7 +11675,6 @@ public static Cipher createCipher(Key key, int encMode) { throw new IgniteException(e); } } - /** * Safely write buffer fully to blocking socket channel. * Will throw assert if non blocking channel passed. 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 9f4b39f2db3f0..fc00eddab81cc 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 @@ -20,12 +20,16 @@ import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; +import java.util.Collection; +import java.util.Collections; 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.apache.ignite.lang.IgniteBiTuple; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** @@ -44,6 +48,12 @@ public class VisorBaselineNode extends VisorDataTransferObject { /** */ private @Nullable Long order; + /** + * Resolved list of ip->hostname pairs + * (if ip has no resolved host, hostname will be the string representation of ip). + */ + private @NotNull Collection> addrs = Collections.emptyList(); + /** * Default constructor. */ @@ -56,18 +66,20 @@ public VisorBaselineNode() { * * @param node Baseline node. */ - public VisorBaselineNode(BaselineNode node) { + public VisorBaselineNode(BaselineNode node, @NotNull Collection> resolvedInetAddrs) { consistentId = String.valueOf(node.consistentId()); attrs = node.attributes(); //Baseline topology returns instances of DetachedClusternode - if (node instanceof IgniteClusterNode) + if (node instanceof IgniteClusterNode) { order = ((IgniteClusterNode)node).order(); + addrs = resolvedInetAddrs; + } } /** {@inheritDoc} */ @Override public byte getProtocolVersion() { - return V2; + return V3; } /** @@ -91,11 +103,20 @@ public Map getAttributes() { return order; } + /** + * + * @return Collection with resolved pairs ip->hostname + */ + public @NotNull Collection> getAddrs() { + return addrs; + } + /** {@inheritDoc} */ @Override protected void writeExternalData(ObjectOutput out) throws IOException { U.writeString(out, consistentId); U.writeMap(out, attrs); out.writeObject(order); + U.writeCollection(out, addrs); } /** {@inheritDoc} */ @@ -105,6 +126,11 @@ public Map getAttributes() { if (protoVer >= V2) order = (Long)in.readObject(); + + if (protoVer >= V3) { + Collection> inputAddrs = U.readCollection(in); + if (inputAddrs != null) addrs = inputAddrs; + } } /** {@inheritDoc} */ diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java index 769100828217a..eac84bd4a7e7b 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java @@ -21,13 +21,21 @@ import java.io.ObjectInput; import java.io.ObjectOutput; import java.util.Collection; +import java.util.Collections; import java.util.Map; import java.util.TreeMap; +import java.util.stream.Collectors; + +import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.cluster.BaselineNode; +import org.apache.ignite.cluster.ClusterNode; +import org.apache.ignite.internal.managers.discovery.IgniteClusterNode; +import org.apache.ignite.internal.util.IgniteUtils; import org.apache.ignite.internal.util.typedef.F; 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.apache.ignite.lang.IgniteBiTuple; /** * Result for {@link VisorBaselineTask}. @@ -75,7 +83,38 @@ private static Map toMap(Collection map = new TreeMap<>(); for (BaselineNode node : nodes) { - VisorBaselineNode dto = new VisorBaselineNode(node); + + VisorBaselineNode dto = new VisorBaselineNode(node, Collections.emptyList()); + + map.put(dto.getConsistentId(), dto); + } + + return map; + } + + /** + * @param nodes Nodes to process. + * @return Map of DTO objects, with resolved ip->hostname pairs. + */ + private static Map toMapWithResolvedAddresses(Collection nodes) { + if (F.isEmpty(nodes)) + return null; + + Map map = new TreeMap<>(); + + for (BaselineNode node : nodes) { + Collection> addrs = Collections.emptyList(); + if (node instanceof IgniteClusterNode) { + try { + addrs = IgniteUtils.toInetAddresses((ClusterNode)node).stream() + .map(addr -> new IgniteBiTuple<>(addr.getHostAddress(), addr.getHostName())) + .collect(Collectors.toList()); + } catch (IgniteCheckedException ex) { + throw IgniteUtils.convertException(ex); + } + } + + VisorBaselineNode dto = new VisorBaselineNode(node, addrs); map.put(dto.getConsistentId(), dto); } @@ -104,7 +143,7 @@ public VisorBaselineTaskResult( this.active = active; this.topVer = topVer; this.baseline = toMap(baseline); - this.servers = toMap(servers); + this.servers = toMapWithResolvedAddresses(servers); this.autoAdjustSettings = autoAdjustSettings; this.remainingTimeToBaselineAdjust = remainingTimeToBaselineAdjust; this.baselineAdjustInProgress = baselineAdjustInProgress; diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorTaskUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorTaskUtils.java index 03f9ecd986d57..5fecd01189244 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorTaskUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorTaskUtils.java @@ -1107,7 +1107,7 @@ public static boolean joinTimedOut(String msg) { * IPv4, private IPv4, IPv4 local host, IPv6. * Lower addresses first. */ - private static class SortableAddress implements Comparable { + public static class SortableAddress implements Comparable { /** */ private int type; @@ -1122,7 +1122,7 @@ private static class SortableAddress implements Comparable { * * @param addr Address as string. */ - private SortableAddress(String addr) { + public SortableAddress(String addr) { this.addr = addr; if (addr.indexOf(':') > 0) diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java index 3fa2aaf3772f8..d2f044b04f386 100755 --- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java +++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java @@ -156,6 +156,7 @@ import static org.apache.ignite.IgniteSystemProperties.IGNITE_CLIENT_CACHE_CHANGE_MESSAGE_TIMEOUT; import static org.apache.ignite.IgniteSystemProperties.IGNITE_DISCO_FAILED_CLIENT_RECONNECT_DELAY; import static org.apache.ignite.IgniteSystemProperties.IGNITE_LOG_CLASSPATH_CONTENT_ON_STARTUP; +import static org.apache.ignite.IgniteSystemProperties.IGNITE_TEST_ENV; import static org.apache.ignite.IgniteSystemProperties.IGNITE_TO_STRING_INCLUDE_SENSITIVE; import static org.apache.ignite.IgniteSystemProperties.IGNITE_UPDATE_NOTIFIER; import static org.apache.ignite.IgniteSystemProperties.getBoolean; @@ -281,6 +282,7 @@ public String getName() { System.setProperty(IGNITE_DISCO_FAILED_CLIENT_RECONNECT_DELAY, "1"); System.setProperty(IGNITE_CLIENT_CACHE_CHANGE_MESSAGE_TIMEOUT, "1000"); System.setProperty(IGNITE_LOG_CLASSPATH_CONTENT_ON_STARTUP, "false"); + System.setProperty(IGNITE_TEST_ENV, "true"); S.setIncludeSensitiveSupplier(() -> getBoolean(IGNITE_TO_STRING_INCLUDE_SENSITIVE, true)); From 70b535cc5a21b7df0381b3267b7d9ea146952745 Mon Sep 17 00:00:00 2001 From: Kirill Gusakov Date: Mon, 12 Oct 2020 17:39:12 +0300 Subject: [PATCH 02/12] Fix checkstyle --- .../java/org/apache/ignite/util/GridCommandHandlerTest.java | 5 +---- .../main/java/org/apache/ignite/IgniteSystemProperties.java | 1 - .../java/org/apache/ignite/internal/util/IgniteUtils.java | 1 + 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java index 4383e8f848313..f5775def941b1 100644 --- a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java +++ b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java @@ -54,7 +54,6 @@ import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.IgniteDataStreamer; import org.apache.ignite.IgniteException; -import org.apache.ignite.IgniteSystemProperties; import org.apache.ignite.ShutdownPolicy; import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction; import org.apache.ignite.cluster.BaselineNode; @@ -95,7 +94,6 @@ import org.apache.ignite.internal.processors.cache.warmup.BlockedWarmUpConfiguration; import org.apache.ignite.internal.processors.cache.warmup.BlockedWarmUpStrategy; import org.apache.ignite.internal.processors.cache.warmup.WarmUpTestPluginProvider; -import org.apache.ignite.internal.util.IgniteUtils; import org.apache.ignite.internal.processors.cluster.GridClusterStateProcessor; import org.apache.ignite.internal.util.lang.GridAbsPredicate; import org.apache.ignite.internal.util.typedef.G; @@ -625,7 +623,6 @@ public void testBaselineCollect() throws Exception { injectTestSystemOut(); - { // non verbose mode assertEquals(EXIT_CODE_OK, execute("--baseline")); @@ -726,7 +723,7 @@ private List findBaselineNodesInfo() { List nodesInfo = new ArrayList<>(); - while ((beginOfNodeDescription = outStr.indexOf("ConsistentId=", j) )!= -1) { + while ((beginOfNodeDescription = outStr.indexOf("ConsistentId=", j) ) != -1) { j = outStr.indexOf("\n", beginOfNodeDescription); nodesInfo.add(outStr.substring(beginOfNodeDescription, j).trim()); } diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java index 92973888591da..90642a3d0707e 100644 --- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java +++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java @@ -1935,7 +1935,6 @@ public final class IgniteSystemProperties { defaults = "" + DFLT_DUMP_TX_COLLISIONS_INTERVAL) public static final String IGNITE_DUMP_TX_COLLISIONS_INTERVAL = "IGNITE_DUMP_TX_COLLISIONS_INTERVAL"; - /** * Set to true only during the junit tests. * diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java index e3b83c175dcdc..7dd582c95fa47 100755 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java @@ -11675,6 +11675,7 @@ public static Cipher createCipher(Key key, int encMode) { throw new IgniteException(e); } } + /** * Safely write buffer fully to blocking socket channel. * Will throw assert if non blocking channel passed. From 12eff9fddf58b4eee7dc4548a6c74e95a37eba96 Mon Sep 17 00:00:00 2001 From: Kirill Gusakov Date: Tue, 13 Oct 2020 14:02:49 +0300 Subject: [PATCH 03/12] Add @SystemProperty annotation --- .../main/java/org/apache/ignite/IgniteSystemProperties.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java index 90642a3d0707e..fb6dc0d613e84 100644 --- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java +++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java @@ -1941,6 +1941,10 @@ public final class IgniteSystemProperties { * Can be used for changing behaviour of tightly coupled code pieces during the tests. * Use it as a last resort only, prefer another toolchain like DI, mocks and etc. if possible */ + @SystemProperty(value = "Set to true only during the junit tests. " + + "Can be used for changing behaviour of tightly coupled code pieces during the tests. " + + "Use it as a last resort only, prefer another toolchain like DI, mocks and etc. if possible", + type = Boolean.class) public static final String IGNITE_TEST_ENV = "IGNITE_TEST_ENV"; /** From 24017e572b41e13f3479d4de745ff419e6910e33 Mon Sep 17 00:00:00 2001 From: Kirill Gusakov Date: Thu, 15 Oct 2020 14:17:19 +0300 Subject: [PATCH 04/12] Fix codestyle. Add javadoc --- .../ignite/internal/commandline/BaselineCommand.java | 12 ++++++++---- .../apache/ignite/util/GridCommandHandlerTest.java | 2 +- .../org/apache/ignite/IgniteSystemProperties.java | 1 + .../org/apache/ignite/internal/util/IgniteUtils.java | 4 ++-- .../visor/baseline/VisorBaselineTaskResult.java | 3 ++- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java index bfeb1cff88a11..49c330f1c4bf4 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java @@ -65,7 +65,7 @@ public class BaselineCommand implements Command { /** * Use verbose mode for command output */ - private @NotNull boolean verbose = false; + private boolean verbose = false; /** {@inheritDoc} */ @Override public void printUsage(Logger logger) { @@ -207,9 +207,11 @@ else if (res.getRemainingTimeToBaselineAdjust() < 0) if (verbose) { String hosts = String.join(",", sortedByIpHosts.collect(Collectors.toList())); + if (!hosts.isEmpty()) return ", Addresses=" + hosts; - else return ""; + else + return ""; } else return sortedByIpHosts.findFirst().map(ip -> ", Address=" + ip).orElse(""); }; @@ -219,7 +221,8 @@ else if (res.getRemainingTimeToBaselineAdjust() < 0) .filter(node -> node.getOrder() != null) .min(Comparator.comparing(VisorBaselineNode::getOrder)) // format - .map(crd -> " (Coordinator: ConsistentId=" + crd.getConsistentId() + extractFormattedAddrs.apply(crd) + ", Order=" + crd.getOrder() + ")") + .map(crd -> " (Coordinator: ConsistentId=" + crd.getConsistentId() + extractFormattedAddrs.apply(crd) + + ", Order=" + crd.getOrder() + ")") .orElse(""); logger.info("Current topology version: " + res.getTopologyVersion() + crdStr); @@ -237,7 +240,8 @@ else if (res.getRemainingTimeToBaselineAdjust() < 0) String order = srvNode != null ? ", Order=" + srvNode.getOrder() : ""; - logger.info(DOUBLE_INDENT + "ConsistentId=" + node.getConsistentId() + extractFormattedAddrs.apply(srvNode) + state + order); + logger.info(DOUBLE_INDENT + "ConsistentId=" + node.getConsistentId() + + extractFormattedAddrs.apply(srvNode) + state + order); } logger.info(DELIM); diff --git a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java index f5775def941b1..b061b2d40f473 100644 --- a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java +++ b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java @@ -715,7 +715,7 @@ private List findBaselineNodesInfo() { int i = outStr.indexOf("Baseline nodes:"); - assertTrue(i != -1); + assertTrue("Baseline nodes information is not found", i != -1); int j = outStr.indexOf("\n", i) + 1; diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java index fb6dc0d613e84..148e86dbe4b96 100644 --- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java +++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java @@ -1937,6 +1937,7 @@ public final class IgniteSystemProperties { /** * Set to true only during the junit tests. + * Signals that the cluster is running in a test environment. * * Can be used for changing behaviour of tightly coupled code pieces during the tests. * Use it as a last resort only, prefer another toolchain like DI, mocks and etc. if possible diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java index 7dd582c95fa47..494143bc3c7bb 100755 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java @@ -9311,8 +9311,8 @@ public static Collection toInetAddresses(Collection addrs, if (!F.isEmpty(hostName)) { try { if (IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_TEST_ENV)) { - String ipString = hostName.substring(0, hostName.length() - ".hostname".length()); - inetAddr = InetAddress.getByAddress(hostName, InetAddress.getByName(ipString).getAddress()); + String ipStr = hostName.substring(0, hostName.length() - ".hostname".length()); + inetAddr = InetAddress.getByAddress(hostName, InetAddress.getByName(ipStr).getAddress()); } else inetAddr = InetAddress.getByName(hostName); } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java index eac84bd4a7e7b..1fa5c6ee98d2a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java @@ -109,7 +109,8 @@ private static Map toMapWithResolvedAddresses(Collect addrs = IgniteUtils.toInetAddresses((ClusterNode)node).stream() .map(addr -> new IgniteBiTuple<>(addr.getHostAddress(), addr.getHostName())) .collect(Collectors.toList()); - } catch (IgniteCheckedException ex) { + } + catch (IgniteCheckedException ex) { throw IgniteUtils.convertException(ex); } } From b382eddd0f2b57e600d4d8a3cd96d2a968f1b954 Mon Sep 17 00:00:00 2001 From: Kirill Gusakov Date: Thu, 15 Oct 2020 14:20:04 +0300 Subject: [PATCH 05/12] Fix abbrs --- .../org/apache/ignite/util/GridCommandHandlerTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java index b061b2d40f473..2610e6e2dfc3f 100644 --- a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java +++ b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java @@ -719,13 +719,13 @@ private List findBaselineNodesInfo() { int j = outStr.indexOf("\n", i) + 1; - int beginOfNodeDescription = -1; + int beginOfNodeDesc = -1; List nodesInfo = new ArrayList<>(); - while ((beginOfNodeDescription = outStr.indexOf("ConsistentId=", j) ) != -1) { - j = outStr.indexOf("\n", beginOfNodeDescription); - nodesInfo.add(outStr.substring(beginOfNodeDescription, j).trim()); + while ((beginOfNodeDesc = outStr.indexOf("ConsistentId=", j) ) != -1) { + j = outStr.indexOf("\n", beginOfNodeDesc); + nodesInfo.add(outStr.substring(beginOfNodeDesc, j).trim()); } return nodesInfo; From a96383df7920545d7fe06c885a4a97a5531f81e5 Mon Sep 17 00:00:00 2001 From: Kirill Gusakov Date: Thu, 15 Oct 2020 15:18:59 +0300 Subject: [PATCH 06/12] Replace tuple by resolved address class --- .../internal/commandline/BaselineCommand.java | 15 ++-- .../visor/baseline/VisorBaselineNode.java | 69 +++++++++++++++++-- .../baseline/VisorBaselineTaskResult.java | 12 ++-- 3 files changed, 76 insertions(+), 20 deletions(-) diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java index 49c330f1c4bf4..97fae0663fbd2 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java @@ -44,7 +44,6 @@ import org.apache.ignite.internal.visor.baseline.VisorBaselineTaskArg; import org.apache.ignite.internal.visor.baseline.VisorBaselineTaskResult; import org.apache.ignite.internal.visor.util.VisorTaskUtils; -import org.jetbrains.annotations.NotNull; import static java.lang.Boolean.TRUE; import static org.apache.ignite.internal.commandline.CommandHandler.DELIM; @@ -198,13 +197,13 @@ else if (res.getRemainingTimeToBaselineAdjust() < 0) .map(addrs -> node.getAddrs()) .orElse(Collections.emptyList()) .stream() - .sorted(Comparator.comparing(tuple -> new VisorTaskUtils.SortableAddress(tuple.getKey()))) - .map(addr -> { - if (!addr.getKey().equals(addr.getValue())) - return addr.getValue() + "/" + addr.getKey(); - else return addr.getKey(); - }); - + .sorted(Comparator + .comparing(resolvedAddr -> new VisorTaskUtils.SortableAddress(resolvedAddr.getAddr()))) + .map(resolvedAddr -> { + if (!resolvedAddr.getHostname().equals(resolvedAddr.getAddr())) + return resolvedAddr.getHostname() + "/" + resolvedAddr.getAddr(); + else return resolvedAddr.getAddr(); + }); if (verbose) { String hosts = String.join(",", sortedByIpHosts.collect(Collectors.toList())); 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 fc00eddab81cc..5728d3017da86 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 @@ -20,15 +20,16 @@ import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; +import java.net.InetAddress; import java.util.Collection; import java.util.Collections; import java.util.Map; import org.apache.ignite.cluster.BaselineNode; +import org.apache.ignite.internal.dto.IgniteDataTransferObject; 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.apache.ignite.lang.IgniteBiTuple; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -49,10 +50,10 @@ public class VisorBaselineNode extends VisorDataTransferObject { private @Nullable Long order; /** - * Resolved list of ip->hostname pairs + * Resolved list of (ip, hostname) pairs * (if ip has no resolved host, hostname will be the string representation of ip). */ - private @NotNull Collection> addrs = Collections.emptyList(); + private @NotNull Collection addrs = Collections.emptyList(); /** * Default constructor. @@ -66,7 +67,7 @@ public VisorBaselineNode() { * * @param node Baseline node. */ - public VisorBaselineNode(BaselineNode node, @NotNull Collection> resolvedInetAddrs) { + public VisorBaselineNode(BaselineNode node, @NotNull Collection resolvedInetAddrs) { consistentId = String.valueOf(node.consistentId()); attrs = node.attributes(); @@ -107,7 +108,7 @@ public Map getAttributes() { * * @return Collection with resolved pairs ip->hostname */ - public @NotNull Collection> getAddrs() { + public @NotNull Collection getAddrs() { return addrs; } @@ -128,7 +129,7 @@ public Map getAttributes() { order = (Long)in.readObject(); if (protoVer >= V3) { - Collection> inputAddrs = U.readCollection(in); + Collection inputAddrs = U.readCollection(in); if (inputAddrs != null) addrs = inputAddrs; } } @@ -137,4 +138,60 @@ public Map getAttributes() { @Override public String toString() { return S.toString(VisorBaselineNode.class, this); } + + /** + * Simple data class for storing (hostname, address) pairs + */ + public static class ResolvedAddresses extends IgniteDataTransferObject { + + /** */ + private static final long serialVersionUID = 0L; + + /** */ + private String hostname; + + /** Textual representation of IP address. */ + private String addr; + + /** + * @param inetAddr Inet address. + */ + public ResolvedAddresses(InetAddress inetAddr) { + this.hostname = inetAddr.getHostName(); + this.addr = inetAddr.getHostAddress(); + } + + /** + * Default constructor. + */ + public ResolvedAddresses() {} + + /** + * @return Hostname. + */ + public String getHostname() { + return hostname; + } + + /** + * @return Textual representation of IP address. + */ + public String getAddr() { + return addr; + } + + /** {@inheritDoc} */ + @Override protected void writeExternalData(ObjectOutput out) throws IOException { + U.writeString(out, hostname); + U.writeString(out, addr); + } + + /** {@inheritDoc} */ + @Override protected void readExternalData(byte protoVer, ObjectInput in) + throws IOException, ClassNotFoundException { + + hostname = U.readString(in); + addr = U.readString(in); + } + } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java index 1fa5c6ee98d2a..4930c59da03b8 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java @@ -20,11 +20,12 @@ import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; +import java.net.InetAddress; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Map; import java.util.TreeMap; -import java.util.stream.Collectors; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.cluster.BaselineNode; @@ -35,7 +36,6 @@ 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.apache.ignite.lang.IgniteBiTuple; /** * Result for {@link VisorBaselineTask}. @@ -103,12 +103,12 @@ private static Map toMapWithResolvedAddresses(Collect Map map = new TreeMap<>(); for (BaselineNode node : nodes) { - Collection> addrs = Collections.emptyList(); + Collection addrs = new ArrayList<>(); if (node instanceof IgniteClusterNode) { try { - addrs = IgniteUtils.toInetAddresses((ClusterNode)node).stream() - .map(addr -> new IgniteBiTuple<>(addr.getHostAddress(), addr.getHostName())) - .collect(Collectors.toList()); + for (InetAddress inetAddress: IgniteUtils.toInetAddresses((ClusterNode)node)) { + addrs.add(new VisorBaselineNode.ResolvedAddresses(inetAddress)); + } } catch (IgniteCheckedException ex) { throw IgniteUtils.convertException(ex); From 3fa0fddc6824b7ca1d917668a9c3037df752bcaf Mon Sep 17 00:00:00 2001 From: Kirill Gusakov Date: Thu, 15 Oct 2020 16:53:17 +0300 Subject: [PATCH 07/12] Add AbstractCommand with support of verbose flag --- .../internal/commandline/AbstractCommand.java | 40 +++++++++++++++++++ .../internal/commandline/ActivateCommand.java | 2 +- .../internal/commandline/BaselineCommand.java | 20 +--------- .../commandline/ClusterChangeTagCommand.java | 2 +- .../ClusterStateChangeCommand.java | 2 +- .../commandline/DeactivateCommand.java | 2 +- .../commandline/ShutdownPolicyCommand.java | 2 +- .../internal/commandline/StateCommand.java | 2 +- .../TracingConfigurationCommand.java | 2 +- .../internal/commandline/TxCommands.java | 2 +- .../internal/commandline/WalCommands.java | 2 +- .../internal/commandline/WarmUpCommand.java | 2 +- .../commandline/cache/CacheCommands.java | 5 ++- .../commandline/cache/CacheContention.java | 3 +- .../commandline/cache/CacheDistribution.java | 3 +- .../cache/CacheIndexesForceRebuild.java | 3 +- .../commandline/cache/CacheIndexesList.java | 3 +- .../cache/CacheIndexesRebuildStatus.java | 3 +- .../cache/CacheValidateIndexes.java | 3 +- .../commandline/cache/CacheViewer.java | 3 +- .../cache/CheckIndexInlineSizes.java | 3 +- .../cache/FindAndDeleteGarbage.java | 3 +- .../commandline/cache/IdleVerify.java | 3 +- .../cache/ResetLostPartitions.java | 3 +- .../diagnostic/DiagnosticCommand.java | 3 +- .../diagnostic/PageLocksCommand.java | 3 +- .../encryption/EncryptionCommand.java | 3 +- .../commandline/meta/MetadataCommand.java | 3 +- .../MetadataAbstractSubCommand.java | 3 +- .../meta/subcommands/MetadataHelpCommand.java | 4 +- .../commandline/metric/MetricCommand.java | 3 +- .../commandline/property/PropertyCommand.java | 3 +- .../PropertyAbstractSubCommand.java | 3 +- .../subcommands/PropertyHelpCommand.java | 4 +- .../commandline/query/KillCommand.java | 3 +- .../commandline/snapshot/SnapshotCommand.java | 3 +- .../systemview/SystemViewCommand.java | 3 +- 37 files changed, 102 insertions(+), 57 deletions(-) create mode 100644 modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/AbstractCommand.java diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/AbstractCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/AbstractCommand.java new file mode 100644 index 0000000000000..7a2e0615ace76 --- /dev/null +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/AbstractCommand.java @@ -0,0 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.internal.commandline; + +import java.util.logging.Logger; + +import org.apache.ignite.internal.client.GridClientConfiguration; + +/** + * {@inheritDoc} + */ +public abstract class AbstractCommand implements Command { + + /** Use verbose mode or not. */ + protected boolean verbose; + + /** + * {@inheritDoc} + */ + @Override public Object execute(GridClientConfiguration clientCfg, Logger log, boolean verbose) throws Exception { + this.verbose = verbose; + return this.execute(clientCfg, log); + } + +} diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ActivateCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ActivateCommand.java index d1fb112ebf634..d2d12ca88fcef 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ActivateCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ActivateCommand.java @@ -32,7 +32,7 @@ * @deprecated Use {@link ClusterStateChangeCommand} instead. */ @Deprecated -public class ActivateCommand implements Command { +public class ActivateCommand extends AbstractCommand { /** {@inheritDoc} */ @Override public void printUsage(Logger logger) { Command.usage(logger, "Activate cluster (deprecated. Use " + SET_STATE.toString() + " instead):", ACTIVATE); diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java index 97fae0663fbd2..6b0d2e1499a93 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java @@ -57,15 +57,10 @@ /** * Commands associated with baseline functionality. */ -public class BaselineCommand implements Command { +public class BaselineCommand extends AbstractCommand { /** Arguments. */ private BaselineArguments baselineArgs; - /** - * Use verbose mode for command output - */ - private boolean verbose = false; - /** {@inheritDoc} */ @Override public void printUsage(Logger logger) { final String constistIds = "consistentId1[,consistentId2,....,consistentIdN]"; @@ -91,19 +86,6 @@ public class BaselineCommand implements Command { return null; } - /** - * @see #execute(GridClientConfiguration, Logger) - * @param clientCfg Thin client configuration if connection to cluster is necessary. - * @param logger Logger to use. - * @param verbose Use verbose mode or not - * - * @throws Exception If failed to execute baseline action. - */ - @Override public Object execute(GridClientConfiguration clientCfg, Logger logger, boolean verbose) throws Exception { - this.verbose = verbose; - return execute(clientCfg, logger); - } - /** * Change baseline. * diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ClusterChangeTagCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ClusterChangeTagCommand.java index 58e5f05a6d3dd..f5b8c10218dac 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ClusterChangeTagCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ClusterChangeTagCommand.java @@ -35,7 +35,7 @@ /** * Command to access cluster ID and tag functionality. */ -public class ClusterChangeTagCommand implements Command { +public class ClusterChangeTagCommand extends AbstractCommand { /** */ private static final String ERR_NO_NEW_TAG_PROVIDED = "Please provide new tag."; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ClusterStateChangeCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ClusterStateChangeCommand.java index 33580881f1e5e..0e92cca2cb90f 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ClusterStateChangeCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ClusterStateChangeCommand.java @@ -35,7 +35,7 @@ /** * Command to change cluster state. */ -public class ClusterStateChangeCommand implements Command { +public class ClusterStateChangeCommand extends AbstractCommand { /** Flag of forced cluster deactivation. */ static final String FORCE_COMMAND = "--force"; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/DeactivateCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/DeactivateCommand.java index 10d0fe56235d3..750001662ce60 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/DeactivateCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/DeactivateCommand.java @@ -33,7 +33,7 @@ * @deprecated Use {@link ClusterStateChangeCommand} instead. */ @Deprecated -public class DeactivateCommand implements Command { +public class DeactivateCommand extends AbstractCommand { /** Cluster name. */ private String clusterName; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ShutdownPolicyCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ShutdownPolicyCommand.java index 3830bdb713ba7..4ef6833a00375 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ShutdownPolicyCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/ShutdownPolicyCommand.java @@ -34,7 +34,7 @@ /** * Command for change or display policy for shutdown. */ -public class ShutdownPolicyCommand implements Command { +public class ShutdownPolicyCommand extends AbstractCommand { /** Arguments. */ private ShutdownPolicyArgument shutdownPolicyArgument; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/StateCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/StateCommand.java index 7084f2fe4af33..f19637ba2a2c5 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/StateCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/StateCommand.java @@ -29,7 +29,7 @@ /** * Command to print cluster state. */ -public class StateCommand implements Command { +public class StateCommand extends AbstractCommand { /** {@inheritDoc} */ @Override public void printUsage(Logger logger) { Command.usage(logger, "Print current cluster state:", STATE); diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/TracingConfigurationCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/TracingConfigurationCommand.java index d8a9673ea57eb..a9d16543f8d04 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/TracingConfigurationCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/TracingConfigurationCommand.java @@ -50,7 +50,7 @@ /** * Commands associated with tracing configuration functionality. */ -public class TracingConfigurationCommand implements Command { +public class TracingConfigurationCommand extends AbstractCommand { /** Arguments. */ private TracingConfigurationArguments args; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/TxCommands.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/TxCommands.java index fbe89f22ee1fd..e266f592f28c7 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/TxCommands.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/TxCommands.java @@ -61,7 +61,7 @@ /** * Transaction commands. */ -public class TxCommands implements Command { +public class TxCommands extends AbstractCommand { /** Arguments */ private VisorTxTaskArg args; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/WalCommands.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/WalCommands.java index 2919470db4a1b..783318cebb3cb 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/WalCommands.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/WalCommands.java @@ -44,7 +44,7 @@ /** * Wal commands. */ -public class WalCommands implements Command> { +public class WalCommands extends AbstractCommand> { /** */ static final String WAL_PRINT = "print"; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/WarmUpCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/WarmUpCommand.java index 2219c5abf446a..3f03e2c4bdced 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/WarmUpCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/WarmUpCommand.java @@ -31,7 +31,7 @@ /** * Command for interacting with warm-up. */ -public class WarmUpCommand implements Command { +public class WarmUpCommand extends AbstractCommand { /** {@inheritDoc} */ @Override public void printUsage(Logger logger) { Command.usage(logger, "Stop warm-up:", WARM_UP, WarmUpCommandArg.STOP.argName()); diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheCommands.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheCommands.java index 681c238eb55d7..778280da11ae8 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheCommands.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheCommands.java @@ -21,6 +21,7 @@ import java.util.Map; import java.util.logging.Logger; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.CommandLogger; @@ -42,7 +43,7 @@ /** * High-level "cache" command implementation. */ -public class CacheCommands implements Command { +public class CacheCommands extends AbstractCommand { /** Empty group name. */ public static final String EMPTY_GROUP_NAME = "no_group"; @@ -75,7 +76,7 @@ public class CacheCommands implements Command { if (command == null) throw new IllegalStateException("Unknown command " + subcommand); - return command.execute(clientCfg, logger); + return command.execute(clientCfg, logger, verbose); } /** {@inheritDoc} */ diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheContention.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheContention.java index 6f7062057e090..35e658498b416 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheContention.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheContention.java @@ -21,6 +21,7 @@ import java.util.logging.Logger; import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.CommandLogger; @@ -39,7 +40,7 @@ /** * Cache contention detection subcommand. */ -public class CacheContention implements Command { +public class CacheContention extends AbstractCommand { /** {@inheritDoc} */ @Override public void printUsage(Logger logger) { String description = "Show the keys that are point of contention for multiple transactions."; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheDistribution.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheDistribution.java index 4b5f3b9813fa6..1def122d1ea34 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheDistribution.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheDistribution.java @@ -23,6 +23,7 @@ import java.util.logging.Logger; import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.CommandHandler; @@ -46,7 +47,7 @@ /** * Would collect and print info about how data is spread between nodes and partitions. */ -public class CacheDistribution implements Command { +public class CacheDistribution extends AbstractCommand { /** {@inheritDoc} */ @Override public void printUsage(Logger logger) { String CACHES = "cacheName1,...,cacheNameN"; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheIndexesForceRebuild.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheIndexesForceRebuild.java index ace4baebcd0d0..c1415ce11c616 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheIndexesForceRebuild.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheIndexesForceRebuild.java @@ -25,6 +25,7 @@ import java.util.logging.Logger; import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.TaskExecutor; @@ -50,7 +51,7 @@ /** * Cache subcommand that triggers indexes force rebuild. */ -public class CacheIndexesForceRebuild implements Command { +public class CacheIndexesForceRebuild extends AbstractCommand { /** Command parsed arguments. */ private Arguments args; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheIndexesList.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheIndexesList.java index b31ea5a71e70a..11d317662441d 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheIndexesList.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheIndexesList.java @@ -27,6 +27,7 @@ import java.util.regex.PatternSyntaxException; import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.TaskExecutor; @@ -47,7 +48,7 @@ /** * Cache subcommand that allows to show indexes. */ -public class CacheIndexesList implements Command { +public class CacheIndexesList extends AbstractCommand { /** Command parsed arguments. */ private Arguments args; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheIndexesRebuildStatus.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheIndexesRebuildStatus.java index 0ec662e9f966f..4bf4115237ac7 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheIndexesRebuildStatus.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheIndexesRebuildStatus.java @@ -23,6 +23,7 @@ import java.util.logging.Logger; import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.TaskExecutor; @@ -41,7 +42,7 @@ /** * Cache subcommand that allows to show caches that have */ -public class CacheIndexesRebuildStatus implements Command { +public class CacheIndexesRebuildStatus extends AbstractCommand { /** Command parsed arguments. */ private Arguments args; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheValidateIndexes.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheValidateIndexes.java index d467b82208de3..fb2ffae5d70e9 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheValidateIndexes.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheValidateIndexes.java @@ -26,6 +26,7 @@ import java.util.logging.Logger; import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.CommandLogger; @@ -62,7 +63,7 @@ /** * Validate indexes command. */ -public class CacheValidateIndexes implements Command { +public class CacheValidateIndexes extends AbstractCommand { /** {@inheritDoc} */ @Override public void printUsage(Logger logger) { String CACHES = "cacheName1,...,cacheNameN"; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheViewer.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheViewer.java index 859a815df9bf0..95171c9c99944 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheViewer.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CacheViewer.java @@ -26,6 +26,7 @@ import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; import org.apache.ignite.internal.client.GridClientException; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.OutputFormat; @@ -68,7 +69,7 @@ /** * Command to show caches on cluster. */ -public class CacheViewer implements Command { +public class CacheViewer extends AbstractCommand { /** {@inheritDoc} */ @Override public void printUsage(Logger logger) { String description = "Show information about caches, groups or sequences that match a regular expression. " + diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CheckIndexInlineSizes.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CheckIndexInlineSizes.java index 7821d07a56b58..457f189afb054 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CheckIndexInlineSizes.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/CheckIndexInlineSizes.java @@ -30,6 +30,7 @@ import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; import org.apache.ignite.internal.client.GridClientNode; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.cache.check_indexes_inline_size.CheckIndexInlineSizesResult; import org.apache.ignite.internal.commandline.cache.check_indexes_inline_size.CheckIndexInlineSizesTask; @@ -44,7 +45,7 @@ /** * Command for check secondary indexes inline size on the different nodes. */ -public class CheckIndexInlineSizes implements Command { +public class CheckIndexInlineSizes extends AbstractCommand { /** Success message. */ public static final String INDEXES_INLINE_SIZE_ARE_THE_SAME = "All secondary indexes have the same effective inline size on all cluster nodes."; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/FindAndDeleteGarbage.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/FindAndDeleteGarbage.java index 7fa625b7f019b..b2c97a3615fe5 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/FindAndDeleteGarbage.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/FindAndDeleteGarbage.java @@ -24,6 +24,7 @@ import java.util.logging.Logger; import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.CommandLogger; @@ -44,7 +45,7 @@ /** * Command to find and delete garbage which could left after destroying caches in shared group. */ -public class FindAndDeleteGarbage implements Command { +public class FindAndDeleteGarbage extends AbstractCommand { /** {@inheritDoc} */ @Override public void printUsage(Logger logger) { String GROUPS = "groupName1,...,groupNameN"; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/IdleVerify.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/IdleVerify.java index 7f4ecb05d2c0d..29b3447cb1a07 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/IdleVerify.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/IdleVerify.java @@ -32,6 +32,7 @@ import org.apache.ignite.internal.client.GridClientConfiguration; import org.apache.ignite.internal.client.GridClientException; import org.apache.ignite.internal.client.GridClientNode; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.argument.CommandArgUtils; @@ -65,7 +66,7 @@ /** * */ -public class IdleVerify implements Command { +public class IdleVerify extends AbstractCommand { /** {@inheritDoc} */ @Override public void printUsage(Logger logger) { String CACHES = "cacheName1,...,cacheNameN"; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/ResetLostPartitions.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/ResetLostPartitions.java index dc35436196b28..34fb57a81ba99 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/ResetLostPartitions.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/cache/ResetLostPartitions.java @@ -21,6 +21,7 @@ import java.util.logging.Logger; import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.cache.reset_lost_partitions.CacheResetLostPartitionsTask; @@ -34,7 +35,7 @@ /** * Command for reseting lost partition state. */ -public class ResetLostPartitions implements Command> { +public class ResetLostPartitions extends AbstractCommand> { /** {@inheritDoc} */ @Override public void printUsage(Logger logger) { String CACHES = "cacheName1,...,cacheNameN"; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/diagnostic/DiagnosticCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/diagnostic/DiagnosticCommand.java index b4ca6e4606c3b..c0e59a32f2358 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/diagnostic/DiagnosticCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/diagnostic/DiagnosticCommand.java @@ -20,6 +20,7 @@ import java.util.Arrays; import java.util.logging.Logger; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; @@ -34,7 +35,7 @@ /** * */ -public class DiagnosticCommand implements Command { +public class DiagnosticCommand extends AbstractCommand { /** */ private DiagnosticSubCommand subcommand; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/diagnostic/PageLocksCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/diagnostic/PageLocksCommand.java index 5d91227762939..18d3d5db6eddc 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/diagnostic/PageLocksCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/diagnostic/PageLocksCommand.java @@ -26,6 +26,7 @@ import org.apache.ignite.cluster.ClusterNode; import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.CommandLogger; @@ -52,7 +53,7 @@ /** * */ -public class PageLocksCommand implements Command { +public class PageLocksCommand extends AbstractCommand { /** */ private Arguments arguments; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/encryption/EncryptionCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/encryption/EncryptionCommand.java index eae804979c2c7..5cbd723ddf73d 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/encryption/EncryptionCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/encryption/EncryptionCommand.java @@ -20,6 +20,7 @@ import java.util.logging.Logger; import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.CommandLogger; @@ -37,7 +38,7 @@ * * @see EncryptionSubcommand */ -public class EncryptionCommand implements Command { +public class EncryptionCommand extends AbstractCommand { /** Subcommand. */ EncryptionSubcommand cmd; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/MetadataCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/MetadataCommand.java index 180d5ec9fb2be..7eeab1f5bf487 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/MetadataCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/MetadataCommand.java @@ -19,6 +19,7 @@ import java.util.logging.Logger; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.meta.subcommands.MetadataRemoveCommand; @@ -37,7 +38,7 @@ /** * */ -public class MetadataCommand implements Command { +public class MetadataCommand extends AbstractCommand { /** * */ diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataAbstractSubCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataAbstractSubCommand.java index dded0fdb41243..8111a023861d8 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataAbstractSubCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataAbstractSubCommand.java @@ -26,6 +26,7 @@ import org.apache.ignite.internal.client.GridClientConfiguration; import org.apache.ignite.internal.client.GridClientDisconnectedException; import org.apache.ignite.internal.client.GridClientNode; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.CommandLogger; @@ -37,7 +38,7 @@ public abstract class MetadataAbstractSubCommand< MetadataArgsDto extends IgniteDataTransferObject, MetadataResultDto extends IgniteDataTransferObject> - implements Command { + extends AbstractCommand { /** Filesystem. */ protected static final FileSystem FS = FileSystems.getDefault(); diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataHelpCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataHelpCommand.java index 35db8f254468d..da93f4f5fbbce 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataHelpCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/meta/subcommands/MetadataHelpCommand.java @@ -19,12 +19,12 @@ import java.util.logging.Logger; import org.apache.ignite.internal.client.GridClientConfiguration; -import org.apache.ignite.internal.commandline.Command; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.meta.MetadataCommand; import org.apache.ignite.internal.commandline.meta.MetadataSubCommandsList; /** */ -public class MetadataHelpCommand implements Command { +public class MetadataHelpCommand extends AbstractCommand { /** {@inheritDoc} */ @Override public void printUsage(Logger log) { throw new UnsupportedOperationException("printUsage"); diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/metric/MetricCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/metric/MetricCommand.java index a409111f2e406..861a8b9d196f4 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/metric/MetricCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/metric/MetricCommand.java @@ -26,6 +26,7 @@ import java.util.stream.Collectors; import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.CommandLogger; @@ -42,7 +43,7 @@ import static org.apache.ignite.internal.visor.systemview.VisorSystemViewTask.SimpleType.STRING; /** Represents command for metric values printing. */ -public class MetricCommand implements Command { +public class MetricCommand extends AbstractCommand { /** * Argument for the metric values obtainig task. * @see VisorMetricTask diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/property/PropertyCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/property/PropertyCommand.java index bee355f348d28..1f2c694e69b30 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/property/PropertyCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/property/PropertyCommand.java @@ -19,6 +19,7 @@ import java.util.logging.Logger; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.processors.configuration.distributed.DistributedChangeableProperty; @@ -33,7 +34,7 @@ /** * Command to manage distributed properties (see {@link DistributedChangeableProperty}) */ -public class PropertyCommand implements Command { +public class PropertyCommand extends AbstractCommand { /** * */ diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/property/subcommands/PropertyAbstractSubCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/property/subcommands/PropertyAbstractSubCommand.java index 251ae21d54507..f852459b9b6d3 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/property/subcommands/PropertyAbstractSubCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/property/subcommands/PropertyAbstractSubCommand.java @@ -24,6 +24,7 @@ import org.apache.ignite.internal.client.GridClientConfiguration; import org.apache.ignite.internal.client.GridClientDisconnectedException; import org.apache.ignite.internal.client.GridClientNode; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.CommandLogger; @@ -35,7 +36,7 @@ public abstract class PropertyAbstractSubCommand< MetadataArgsDto extends IgniteDataTransferObject, MetadataResultDto extends IgniteDataTransferObject> - implements Command { + extends AbstractCommand { /** */ private MetadataArgsDto args; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/property/subcommands/PropertyHelpCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/property/subcommands/PropertyHelpCommand.java index 61f3080d1b077..29de3ec0a24b3 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/property/subcommands/PropertyHelpCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/property/subcommands/PropertyHelpCommand.java @@ -19,12 +19,12 @@ import java.util.logging.Logger; import org.apache.ignite.internal.client.GridClientConfiguration; -import org.apache.ignite.internal.commandline.Command; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.meta.MetadataCommand; import org.apache.ignite.internal.commandline.meta.MetadataSubCommandsList; /** */ -public class PropertyHelpCommand implements Command { +public class PropertyHelpCommand extends AbstractCommand { /** {@inheritDoc} */ @Override public void printUsage(Logger log) { throw new UnsupportedOperationException("printUsage"); diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/query/KillCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/query/KillCommand.java index 38b170d210a3f..af2dbd565751a 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/query/KillCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/query/KillCommand.java @@ -23,6 +23,7 @@ import java.util.logging.Logger; import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.CommandLogger; @@ -69,7 +70,7 @@ * @see ComputeMXBean * @see TransactionsMXBean */ -public class KillCommand implements Command { +public class KillCommand extends AbstractCommand { /** Command argument. */ private Object taskArgs; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/snapshot/SnapshotCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/snapshot/SnapshotCommand.java index 2c77e6997aae5..2f9597e5838f4 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/snapshot/SnapshotCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/snapshot/SnapshotCommand.java @@ -20,6 +20,7 @@ import java.util.logging.Logger; import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.CommandLogger; @@ -41,7 +42,7 @@ * @see SnapshotMXBean * @see IgniteSnapshotManager */ -public class SnapshotCommand implements Command { +public class SnapshotCommand extends AbstractCommand { /** Command argument. */ private Object taskArgs; diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/systemview/SystemViewCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/systemview/SystemViewCommand.java index cef934477002f..14b544f8304a5 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/systemview/SystemViewCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/systemview/SystemViewCommand.java @@ -29,6 +29,7 @@ import java.util.stream.Collectors; import org.apache.ignite.internal.client.GridClient; import org.apache.ignite.internal.client.GridClientConfiguration; +import org.apache.ignite.internal.commandline.AbstractCommand; import org.apache.ignite.internal.commandline.Command; import org.apache.ignite.internal.commandline.CommandArgIterator; import org.apache.ignite.internal.commandline.CommandLogger; @@ -49,7 +50,7 @@ import static org.apache.ignite.internal.visor.systemview.VisorSystemViewTask.SimpleType.STRING; /** Represents command for {@link SystemView} content printing. */ -public class SystemViewCommand implements Command { +public class SystemViewCommand extends AbstractCommand { /** Column separator. */ public static final String COLUMN_SEPARATOR = " "; From b5fc8154708af8dab103ebf98967204ad708c090 Mon Sep 17 00:00:00 2001 From: Kirill Gusakov Date: Thu, 15 Oct 2020 18:19:20 +0300 Subject: [PATCH 08/12] Use private method instead of toInetAddress from IgniteUtils --- .../ignite/internal/util/IgniteUtils.java | 10 +-- .../baseline/VisorBaselineTaskResult.java | 66 ++++++++++++++++--- 2 files changed, 59 insertions(+), 17 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java index 494143bc3c7bb..6bdc6fab34138 100755 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java @@ -9310,11 +9310,7 @@ public static Collection toInetAddresses(Collection addrs, if (!F.isEmpty(hostName)) { try { - if (IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_TEST_ENV)) { - String ipStr = hostName.substring(0, hostName.length() - ".hostname".length()); - inetAddr = InetAddress.getByAddress(hostName, InetAddress.getByName(ipStr).getAddress()); - - } else inetAddr = InetAddress.getByName(hostName); + inetAddr = InetAddress.getByName(hostName); } catch (UnknownHostException ignored) { } @@ -9322,9 +9318,7 @@ public static Collection toInetAddresses(Collection addrs, if (inetAddr == null || inetAddr.isLoopbackAddress()) { try { - if (IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_TEST_ENV)) - inetAddr = InetAddress.getByAddress(addr + ".hostname", InetAddress.getByName(addr).getAddress()); - else inetAddr = InetAddress.getByName(addr); + inetAddr = InetAddress.getByName(addr); } catch (UnknownHostException ignored) { } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java index 4930c59da03b8..9b58593011f07 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java @@ -21,17 +21,20 @@ import java.io.ObjectInput; import java.io.ObjectOutput; import java.net.InetAddress; +import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashSet; +import java.util.Iterator; import java.util.Map; +import java.util.Set; import java.util.TreeMap; -import org.apache.ignite.IgniteCheckedException; +import org.apache.ignite.IgniteSystemProperties; import org.apache.ignite.cluster.BaselineNode; import org.apache.ignite.cluster.ClusterNode; import org.apache.ignite.internal.managers.discovery.IgniteClusterNode; -import org.apache.ignite.internal.util.IgniteUtils; import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.internal.util.typedef.internal.U; @@ -105,13 +108,8 @@ private static Map toMapWithResolvedAddresses(Collect for (BaselineNode node : nodes) { Collection addrs = new ArrayList<>(); if (node instanceof IgniteClusterNode) { - try { - for (InetAddress inetAddress: IgniteUtils.toInetAddresses((ClusterNode)node)) { - addrs.add(new VisorBaselineNode.ResolvedAddresses(inetAddress)); - } - } - catch (IgniteCheckedException ex) { - throw IgniteUtils.convertException(ex); + for (InetAddress inetAddress: resolveInetAddresses((ClusterNode)node)) { + addrs.add(new VisorBaselineNode.ResolvedAddresses(inetAddress)); } } @@ -123,6 +121,56 @@ private static Map toMapWithResolvedAddresses(Collect return map; } + /** + * @return Resolved inet addresses of node + */ + private static Collection resolveInetAddresses(ClusterNode node) { + Set res = new HashSet<>(node.addresses().size()); + + Iterator hostNamesIt = node.hostNames().iterator(); + + for (String addr : node.addresses()) { + String hostName = hostNamesIt.hasNext() ? hostNamesIt.next() : null; + + InetAddress inetAddr = null; + + if (!F.isEmpty(hostName)) { + try { + if (IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_TEST_ENV)) { + // 127.0.0.1.hostname will be resolved to 127.0.0.1 + if (hostName.endsWith(".hostname")) { + String ipStr = hostName.substring(0, hostName.length() - ".hostname".length()); + inetAddr = InetAddress.getByAddress(hostName, InetAddress.getByName(ipStr).getAddress()); + } + else + throw new UnknownHostException(hostName); + } + else + inetAddr = InetAddress.getByName(hostName); + } + catch (UnknownHostException ignored) { + } + } + + if (inetAddr == null || inetAddr.isLoopbackAddress()) { + try { + if (IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_TEST_ENV)) + // 127.0.0.1 will be reverse-resolved to 127.0.0.1.hostname + inetAddr = InetAddress.getByAddress(addr + ".hostname", InetAddress.getByName(addr).getAddress()); + else + inetAddr = InetAddress.getByName(addr); + } + catch (UnknownHostException ignored) { + } + } + + if (inetAddr != null) + res.add(inetAddr); + } + + return res; + } + /** * Constructor. * From 2bda565a38cde0886ae0304137e17fdd30f07967 Mon Sep 17 00:00:00 2001 From: Kirill Gusakov Date: Thu, 15 Oct 2020 18:27:57 +0300 Subject: [PATCH 09/12] Added test for empty resolved addresses --- .../apache/ignite/util/GridCommandHandlerTest.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java index 2610e6e2dfc3f..5970ae43b4386 100644 --- a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java +++ b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java @@ -639,6 +639,18 @@ public void testBaselineCollect() throws Exception { assertContains(log, nodesInfo.get(0), "Addresses=188.166.164.247.hostname/188.166.164.247,10.19.112.175.hostname/10.19.112.175"); } + { // empty resolved addresses + addresses.set(ignite.cluster().node(), Collections.emptyList()); + hostNames.set(ignite.cluster().node(), Collections.emptyList()); + + assertEquals(EXIT_CODE_OK, execute("--verbose", "--baseline")); + + List nodesInfo = findBaselineNodesInfo(); + assertEquals(1, nodesInfo.size()); + assertContains(log, nodesInfo.get(0), "ConsistentId=" + + grid(0).cluster().localNode().consistentId() + ", State="); + } + assertEquals(1, ignite.cluster().currentBaselineTopology().size()); } From 0b7481c4b3ab65213aadea78ac2e1d548d1605e0 Mon Sep 17 00:00:00 2001 From: Kirill Gusakov Date: Fri, 16 Oct 2020 11:01:11 +0300 Subject: [PATCH 10/12] Add --verbose flag description --- .../apache/ignite/internal/commandline/BaselineCommand.java | 4 +++- .../GridCommandHandlerClusterByClassTest_help.output | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java index 6b0d2e1499a93..a135694a1d216 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java @@ -46,6 +46,7 @@ import org.apache.ignite.internal.visor.util.VisorTaskUtils; import static java.lang.Boolean.TRUE; +import static java.util.Collections.singletonMap; import static org.apache.ignite.internal.commandline.CommandHandler.DELIM; import static org.apache.ignite.internal.commandline.CommandList.BASELINE; import static org.apache.ignite.internal.commandline.CommandLogger.DOUBLE_INDENT; @@ -65,7 +66,8 @@ public class BaselineCommand extends AbstractCommand { @Override public void printUsage(Logger logger) { final String constistIds = "consistentId1[,consistentId2,....,consistentIdN]"; - Command.usage(logger, "Print cluster baseline topology:", BASELINE); + Command.usage(logger, "Print cluster baseline topology:", BASELINE, + singletonMap("verbose", "Show the full list of node ips."), optional("--verbose")); Command.usage(logger, "Add nodes into baseline topology:", BASELINE, BaselineSubcommands.ADD.text(), constistIds, optional(CMD_AUTO_CONFIRMATION)); Command.usage(logger, "Remove nodes from baseline topology:", BASELINE, BaselineSubcommands.REMOVE.text(), diff --git a/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassTest_help.output b/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassTest_help.output index e84d8fb87815b..2806cd60552cc 100644 --- a/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassTest_help.output +++ b/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassTest_help.output @@ -27,7 +27,10 @@ This utility can do the following commands: ACTIVE_READ_ONLY - Activate cluster. Cache updates are denied. Print cluster baseline topology: - control.(sh|bat) --baseline + control.(sh|bat) --baseline [--verbose] + + Parameters: + verbose - Show the full list of node ips. Add nodes into baseline topology: control.(sh|bat) --baseline add consistentId1[,consistentId2,....,consistentIdN] [--yes] From 98039a4d9e6bb662d01ad7469783a3ec997de428 Mon Sep 17 00:00:00 2001 From: Kirill Gusakov Date: Fri, 16 Oct 2020 13:48:19 +0300 Subject: [PATCH 11/12] Fix codestyle --- .../internal/commandline/AbstractCommand.java | 1 - .../internal/commandline/BaselineCommand.java | 9 ++--- .../visor/baseline/VisorBaselineNode.java | 33 +++++++++---------- .../baseline/VisorBaselineTaskResult.java | 5 ++- ...ndlerClusterByClassWithSSLTest_help.output | 5 ++- 5 files changed, 27 insertions(+), 26 deletions(-) diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/AbstractCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/AbstractCommand.java index 7a2e0615ace76..ea4191ea1d231 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/AbstractCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/AbstractCommand.java @@ -36,5 +36,4 @@ public abstract class AbstractCommand implements Command { this.verbose = verbose; return this.execute(clientCfg, log); } - } diff --git a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java index a135694a1d216..53994d20507df 100644 --- a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java +++ b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/BaselineCommand.java @@ -182,11 +182,12 @@ else if (res.getRemainingTimeToBaselineAdjust() < 0) .orElse(Collections.emptyList()) .stream() .sorted(Comparator - .comparing(resolvedAddr -> new VisorTaskUtils.SortableAddress(resolvedAddr.getAddr()))) + .comparing(resolvedAddr -> new VisorTaskUtils.SortableAddress(resolvedAddr.address()))) .map(resolvedAddr -> { - if (!resolvedAddr.getHostname().equals(resolvedAddr.getAddr())) - return resolvedAddr.getHostname() + "/" + resolvedAddr.getAddr(); - else return resolvedAddr.getAddr(); + if (!resolvedAddr.hostname().equals(resolvedAddr.address())) + return resolvedAddr.hostname() + "/" + resolvedAddr.address(); + else + return resolvedAddr.address(); }); if (verbose) { String hosts = String.join(",", sortedByIpHosts.collect(Collectors.toList())); 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 5728d3017da86..c3187be58a291 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 @@ -143,7 +143,6 @@ public Map getAttributes() { * Simple data class for storing (hostname, address) pairs */ public static class ResolvedAddresses extends IgniteDataTransferObject { - /** */ private static final long serialVersionUID = 0L; @@ -156,7 +155,7 @@ public static class ResolvedAddresses extends IgniteDataTransferObject { /** * @param inetAddr Inet address. */ - public ResolvedAddresses(InetAddress inetAddr) { + ResolvedAddresses(InetAddress inetAddr) { this.hostname = inetAddr.getHostName(); this.addr = inetAddr.getHostAddress(); } @@ -164,20 +163,7 @@ public ResolvedAddresses(InetAddress inetAddr) { /** * Default constructor. */ - public ResolvedAddresses() {} - - /** - * @return Hostname. - */ - public String getHostname() { - return hostname; - } - - /** - * @return Textual representation of IP address. - */ - public String getAddr() { - return addr; + public ResolvedAddresses() { } /** {@inheritDoc} */ @@ -189,9 +175,22 @@ public String getAddr() { /** {@inheritDoc} */ @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { - hostname = U.readString(in); addr = U.readString(in); } + + /** + * @return Hostname. + */ + public String hostname() { + return hostname; + } + + /** + * @return Textual representation of IP address. + */ + public String address() { + return addr; + } } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java index 9b58593011f07..25b2a189080bf 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java @@ -86,7 +86,6 @@ private static Map toMap(Collection map = new TreeMap<>(); for (BaselineNode node : nodes) { - VisorBaselineNode dto = new VisorBaselineNode(node, Collections.emptyList()); map.put(dto.getConsistentId(), dto); @@ -107,10 +106,10 @@ private static Map toMapWithResolvedAddresses(Collect for (BaselineNode node : nodes) { Collection addrs = new ArrayList<>(); + if (node instanceof IgniteClusterNode) { - for (InetAddress inetAddress: resolveInetAddresses((ClusterNode)node)) { + for (InetAddress inetAddress: resolveInetAddresses((ClusterNode)node)) addrs.add(new VisorBaselineNode.ResolvedAddresses(inetAddress)); - } } VisorBaselineNode dto = new VisorBaselineNode(node, addrs); diff --git a/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassWithSSLTest_help.output b/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassWithSSLTest_help.output index e84d8fb87815b..2806cd60552cc 100644 --- a/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassWithSSLTest_help.output +++ b/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassWithSSLTest_help.output @@ -27,7 +27,10 @@ This utility can do the following commands: ACTIVE_READ_ONLY - Activate cluster. Cache updates are denied. Print cluster baseline topology: - control.(sh|bat) --baseline + control.(sh|bat) --baseline [--verbose] + + Parameters: + verbose - Show the full list of node ips. Add nodes into baseline topology: control.(sh|bat) --baseline add consistentId1[,consistentId2,....,consistentIdN] [--yes] From 586d584cf6302b80fcfe6d1d47d0c6cf74a3f64b Mon Sep 17 00:00:00 2001 From: Kirill Gusakov Date: Fri, 16 Oct 2020 15:23:34 +0300 Subject: [PATCH 12/12] Remove redundant throw --- .../ignite/internal/visor/baseline/VisorBaselineTaskResult.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java index 25b2a189080bf..a9b62e10f64eb 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTaskResult.java @@ -141,8 +141,6 @@ private static Collection resolveInetAddresses(ClusterNode node) { String ipStr = hostName.substring(0, hostName.length() - ".hostname".length()); inetAddr = InetAddress.getByAddress(hostName, InetAddress.getByName(ipStr).getAddress()); } - else - throw new UnknownHostException(hostName); } else inetAddr = InetAddress.getByName(hostName);