You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ti...@apache.org on 2024/02/13 08:16:12 UTC

(ignite) branch master updated: IGNITE-21102 Use ClusterState enum for baseline control.sh commands output (#11138)

This is an automated email from the ASF dual-hosted git repository.

timoninmaxim pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new ffde1db96f0 IGNITE-21102 Use ClusterState enum for baseline control.sh commands output (#11138)
ffde1db96f0 is described below

commit ffde1db96f0c9d0d86c773daa4f6baee18ab1b66
Author: oleg-vlsk <15...@users.noreply.github.com>
AuthorDate: Tue Feb 13 18:16:03 2024 +1000

    IGNITE-21102 Use ClusterState enum for baseline control.sh commands output (#11138)
---
 .../apache/ignite/util/GridCommandHandlerTest.java | 33 ++++++++++++++++++++--
 .../ignite/internal/management/StateCommand.java   | 20 +------------
 .../baseline/AbstractBaselineCommand.java          |  2 +-
 .../internal/management/baseline/BaselineTask.java |  2 +-
 .../management/baseline/BaselineTaskResult.java    | 25 ++++++++++------
 .../visor/baseline/VisorBaselineViewTask.java      |  2 +-
 6 files changed, 50 insertions(+), 34 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 887448cc1cf..fc193081c41 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
@@ -903,7 +903,7 @@ public class GridCommandHandlerTest extends GridCommandHandlerClusterPerMethodAb
 
         assertEquals(EXIT_CODE_OK, execute("--state"));
 
-        assertContains(log, testOut.toString(), "Cluster is inactive");
+        assertClusterState(INACTIVE, testOut.toString());
 
         String out = testOut.toString();
 
@@ -919,7 +919,7 @@ public class GridCommandHandlerTest extends GridCommandHandlerClusterPerMethodAb
 
         assertEquals(EXIT_CODE_OK, execute("--state"));
 
-        assertContains(log, testOut.toString(), "Cluster is active");
+        assertClusterState(ACTIVE, testOut.toString());
 
         ignite.cluster().state(ACTIVE_READ_ONLY);
 
@@ -929,7 +929,7 @@ public class GridCommandHandlerTest extends GridCommandHandlerClusterPerMethodAb
 
         assertEquals(EXIT_CODE_OK, execute("--state"));
 
-        assertContains(log, testOut.toString(), "Cluster is active (read-only)");
+        assertClusterState(ACTIVE_READ_ONLY, testOut.toString());
 
         boolean tagUpdated = GridTestUtils.waitForCondition(() -> {
             try {
@@ -3972,6 +3972,25 @@ public class GridCommandHandlerTest extends GridCommandHandlerClusterPerMethodAb
         assertContains(log, testOut.toString(), "no conflicts have been found");
     }
 
+    /**
+     * Test to make sure that the '--baseline' command shows correct cluster state
+     *
+     * @throws Exception if failed.
+     */
+    @Test
+    public void testClusterStateInBaselineCommand() throws Exception {
+        Ignite ignite = startGrids(1);
+
+        injectTestSystemOut();
+
+        for (ClusterState state : ClusterState.values()) {
+            ignite.cluster().state(state);
+            assertEquals(EXIT_CODE_OK, execute("--baseline"));
+            assertEquals(state, ignite.cluster().state());
+            assertClusterState(state, testOut.toString());
+        }
+    }
+
     /**
      * @param ignite Ignite to execute task on.
      * @param delFoundGarbage If clearing mode should be used.
@@ -4060,4 +4079,12 @@ public class GridCommandHandlerTest extends GridCommandHandlerClusterPerMethodAb
             }
         }
     }
+
+    /**
+     * @param state Current state of the cluster.
+     * @param logOutput Logger output where current cluster state is supposed to be specified.
+     */
+    public static void assertClusterState(ClusterState state, String logOutput) {
+        assertTrue(Pattern.compile("Cluster state: " + state + "\\s+").matcher(logOutput).find());
+    }
 }
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/management/StateCommand.java b/modules/core/src/main/java/org/apache/ignite/internal/management/StateCommand.java
index 8b7ff823a86..21eca4fd8a1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/management/StateCommand.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/management/StateCommand.java
@@ -73,25 +73,7 @@ public class StateCommand implements LocalCommand<NoArg, GridTuple3<UUID, String
 
         printer.accept(DELIM);
 
-        switch (state) {
-            case ACTIVE:
-                printer.accept("Cluster is active");
-
-                break;
-
-            case INACTIVE:
-                printer.accept("Cluster is inactive");
-
-                break;
-
-            case ACTIVE_READ_ONLY:
-                printer.accept("Cluster is active (read-only)");
-
-                break;
-
-            default:
-                throw new IllegalStateException("Unknown state: " + state);
-        }
+        printer.accept("Cluster state: " + state);
 
         return F.t(id, tag, state);
     }
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/management/baseline/AbstractBaselineCommand.java b/modules/core/src/main/java/org/apache/ignite/internal/management/baseline/AbstractBaselineCommand.java
index 47c9ffb575f..8b98457ba60 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/management/baseline/AbstractBaselineCommand.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/management/baseline/AbstractBaselineCommand.java
@@ -57,7 +57,7 @@ public abstract class AbstractBaselineCommand implements ComputeCommand<Baseline
         BaselineTaskResult res,
         Consumer<String> printer
     ) {
-        printer.accept("Cluster state: " + (res.isActive() ? "active" : "inactive"));
+        printer.accept("Cluster state: " + res.clusterState());
         printer.accept("Current topology version: " + res.getTopologyVersion());
         BaselineAutoAdjustSettings autoAdjustSettings = res.getAutoAdjustSettings();
 
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/management/baseline/BaselineTask.java b/modules/core/src/main/java/org/apache/ignite/internal/management/baseline/BaselineTask.java
index abfb8142fbe..8c8a1bea7ea 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/management/baseline/BaselineTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/management/baseline/BaselineTask.java
@@ -84,7 +84,7 @@ public class BaselineTask extends VisorOneNodeTask<BaselineTaskArg, BaselineTask
             BaselineAutoAdjustStatus adjustStatus = cluster.baselineAutoAdjustStatus();
 
             return new BaselineTaskResult(
-                ignite.cluster().state().active(),
+                ignite.cluster().state(),
                 cluster.topologyVersion(),
                 F.isEmpty(baseline) ? null : baseline,
                 srvrs,
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/management/baseline/BaselineTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/management/baseline/BaselineTaskResult.java
index 4a8102dfc67..bc9c86cf6dc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/management/baseline/BaselineTaskResult.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/management/baseline/BaselineTaskResult.java
@@ -32,6 +32,7 @@ import java.util.Set;
 import java.util.TreeMap;
 import org.apache.ignite.IgniteSystemProperties;
 import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.cluster.ClusterState;
 import org.apache.ignite.internal.managers.discovery.IgniteClusterNode;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.S;
@@ -46,7 +47,7 @@ public class BaselineTaskResult extends VisorDataTransferObject {
     private static final long serialVersionUID = 0L;
 
     /** Cluster state. */
-    private boolean active;
+    private ClusterState clusterState;
 
     /** Current topology version. */
     private long topVer;
@@ -171,7 +172,7 @@ public class BaselineTaskResult extends VisorDataTransferObject {
     /**
      * Constructor.
      *
-     * @param active Cluster state.
+     * @param clusterState Cluster state.
      * @param topVer Current topology version.
      * @param baseline Current baseline nodes.
      * @param servers Current server nodes.
@@ -179,14 +180,14 @@ public class BaselineTaskResult extends VisorDataTransferObject {
      * @param baselineAdjustInProgress {@code true} If baseline adjust is in progress.
      */
     public BaselineTaskResult(
-        boolean active,
+        ClusterState clusterState,
         long topVer,
         Collection<? extends org.apache.ignite.cluster.BaselineNode> baseline,
         Collection<? extends org.apache.ignite.cluster.BaselineNode> servers,
         BaselineAutoAdjustSettings autoAdjustSettings,
         long remainingTimeToBaselineAdjust,
         boolean baselineAdjustInProgress) {
-        this.active = active;
+        this.clusterState = clusterState;
         this.topVer = topVer;
         this.baseline = toMap(baseline);
         this.servers = toMapWithResolvedAddresses(servers);
@@ -198,8 +199,8 @@ public class BaselineTaskResult extends VisorDataTransferObject {
     /**
      * @return Cluster state.
      */
-    public boolean isActive() {
-        return active;
+    public ClusterState clusterState() {
+        return clusterState;
     }
 
     /**
@@ -225,7 +226,7 @@ public class BaselineTaskResult extends VisorDataTransferObject {
 
     /** {@inheritDoc} */
     @Override public byte getProtocolVersion() {
-        return V2;
+        return V3;
     }
 
     /**
@@ -251,19 +252,20 @@ public class BaselineTaskResult extends VisorDataTransferObject {
 
     /** {@inheritDoc} */
     @Override protected void writeExternalData(ObjectOutput out) throws IOException {
-        out.writeBoolean(active);
+        out.writeBoolean(clusterState.active());
         out.writeLong(topVer);
         U.writeMap(out, baseline);
         U.writeMap(out, servers);
         out.writeObject(autoAdjustSettings);
         out.writeLong(remainingTimeToBaselineAdjust);
         out.writeBoolean(baselineAdjustInProgress);
+        U.writeEnum(out, clusterState);
     }
 
     /** {@inheritDoc} */
     @Override protected void readExternalData(byte protoVer,
         ObjectInput in) throws IOException, ClassNotFoundException {
-        active = in.readBoolean();
+        boolean active = in.readBoolean();
         topVer = in.readLong();
         baseline = U.readTreeMap(in);
         servers = U.readTreeMap(in);
@@ -273,6 +275,11 @@ public class BaselineTaskResult extends VisorDataTransferObject {
             remainingTimeToBaselineAdjust = in.readLong();
             baselineAdjustInProgress = in.readBoolean();
         }
+
+        if (protoVer <= V2)
+            clusterState = active ? ClusterState.ACTIVE : ClusterState.INACTIVE;
+        else
+            clusterState = U.readEnum(in, ClusterState.class);
     }
 
     /** {@inheritDoc} */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineViewTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineViewTask.java
index 44eb9508a28..5a8b1015799 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineViewTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineViewTask.java
@@ -68,7 +68,7 @@ public class VisorBaselineViewTask extends VisorOneNodeTask<Void, BaselineTaskRe
             BaselineAutoAdjustStatus adjustStatus = cluster.baselineAutoAdjustStatus();
 
             return new BaselineTaskResult(
-                ignite.cluster().state().active(),
+                ignite.cluster().state(),
                 cluster.topologyVersion(),
                 cluster.currentBaselineTopology(),
                 cluster.forServers().nodes(),