You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by sp...@apache.org on 2023/02/16 12:49:02 UTC

[iotdb] branch master updated: Finish (#9077)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new c20cde60aa Finish (#9077)
c20cde60aa is described below

commit c20cde60aaa510067428c87b751f8d9fb9d9f29f
Author: YongzaoDan <33...@users.noreply.github.com>
AuthorDate: Thu Feb 16 20:48:54 2023 +0800

    Finish (#9077)
---
 .../confignode/conf/ConfigNodeStartupCheck.java    |  1 +
 .../manager/node/ClusterNodeStartUtils.java        | 21 +-------
 .../it/cluster/IoTDBClusterNodeErrorStartUpIT.java | 57 ++++++----------------
 .../it/cluster/IoTDBClusterNodeGetterIT.java       |  1 +
 .../it/cluster/IoTDBClusterRestartIT.java          |  1 +
 5 files changed, 20 insertions(+), 61 deletions(-)

diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeStartupCheck.java b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeStartupCheck.java
index b444928dcf..27efcc534a 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeStartupCheck.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeStartupCheck.java
@@ -16,6 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.iotdb.confignode.conf;
 
 import org.apache.iotdb.commons.conf.IoTDBConstant;
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/ClusterNodeStartUtils.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/ClusterNodeStartUtils.java
index d1a118a9f2..699b7026d6 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/ClusterNodeStartUtils.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/ClusterNodeStartUtils.java
@@ -16,6 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.iotdb.confignode.manager.node;
 
 import org.apache.iotdb.common.rpc.thrift.TConfigNodeLocation;
@@ -23,13 +24,11 @@ import org.apache.iotdb.common.rpc.thrift.TDataNodeConfiguration;
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.cluster.NodeStatus;
 import org.apache.iotdb.commons.cluster.NodeType;
 import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.confignode.conf.ConfigNodeConstant;
 import org.apache.iotdb.confignode.conf.ConfigNodeDescriptor;
 import org.apache.iotdb.confignode.manager.ConfigManager;
-import org.apache.iotdb.confignode.manager.node.heartbeat.BaseNodeCache;
 import org.apache.iotdb.rpc.TSStatusCode;
 
 import java.util.ArrayList;
@@ -196,24 +195,6 @@ public class ClusterNodeStartUtils {
       return status;
     }
 
-    boolean isNodeAlive;
-    NodeStatus nodeStatus = configManager.getNodeManager().getNodeStatusByNodeId(nodeId);
-    isNodeAlive = nodeStatus != null && !NodeStatus.Unknown.equals(nodeStatus);
-    if (isNodeAlive) {
-      /* Reject restart because the Node is still alive */
-      status.setCode(TSStatusCode.REJECT_NODE_START.getStatusCode());
-      status.setMessage(
-          String.format(
-              "Reject %s restart. Because there already exists an alive Node with the same nodeId=%d in the target cluster."
-                  + POSSIBLE_SOLUTIONS
-                  + "\t1. Maybe you've just shutdown this Node recently. Please wait about %s for the ConfigNode-leader to mark this Node as Unknown before retry start. You can use SQL \"show cluster details\" to find out this Node's status."
-                  + "\n\t2. Maybe you start this Node by copying the 'data' dir of another alive Node. Please delete 'data' dir and retry start.",
-              nodeType.getNodeType(),
-              nodeId,
-              (BaseNodeCache.HEARTBEAT_TIMEOUT_TIME / 1000) + "s"));
-      return status;
-    }
-
     boolean isTEndPointUpdated;
     switch (nodeType) {
       case ConfigNode:
diff --git a/integration-test/src/test/java/org/apache/iotdb/confignode/it/cluster/IoTDBClusterNodeErrorStartUpIT.java b/integration-test/src/test/java/org/apache/iotdb/confignode/it/cluster/IoTDBClusterNodeErrorStartUpIT.java
index a57a3d1570..c92bc04c2b 100644
--- a/integration-test/src/test/java/org/apache/iotdb/confignode/it/cluster/IoTDBClusterNodeErrorStartUpIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/confignode/it/cluster/IoTDBClusterNodeErrorStartUpIT.java
@@ -16,6 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.iotdb.confignode.it.cluster;
 
 import org.apache.iotdb.common.rpc.thrift.TConfigNodeLocation;
@@ -229,8 +230,18 @@ public class IoTDBClusterNodeErrorStartUpIT {
           dataNodeRestartResp.getStatus().getCode());
       Assert.assertTrue(dataNodeRestartResp.getStatus().getMessage().contains("whose nodeId="));
 
-      /* Restart an alive Node */
+      // Shutdown and check
+      EnvFactory.getEnv().shutdownConfigNode(1);
+      EnvFactory.getEnv().shutdownDataNode(0);
+      EnvFactory.getEnv()
+          .ensureNodeStatus(
+              Arrays.asList(
+                  EnvFactory.getEnv().getConfigNodeWrapper(1),
+                  EnvFactory.getEnv().getDataNodeWrapper(0)),
+              Arrays.asList(NodeStatus.Unknown, NodeStatus.Unknown));
 
+      /* Restart and updatePeer */
+      // TODO: @Itami-sho, enable this test and delete it
       int registeredConfigNodeId = -1;
       TShowClusterResp showClusterResp = client.showCluster();
       for (TConfigNodeLocation configNodeLocation : showClusterResp.getConfigNodeList()) {
@@ -241,16 +252,16 @@ public class IoTDBClusterNodeErrorStartUpIT {
         }
       }
       Assert.assertNotEquals(-1, registeredConfigNodeId);
+      int originPort = registeredConfigNodeWrapper.getConsensusPort();
+      registeredConfigNodeWrapper.setConsensusPort(-12345);
       configNodeRestartReq =
           ConfigNodeTestUtils.generateTConfigNodeRestartReq(
               TEST_CLUSTER_NAME, registeredConfigNodeId, registeredConfigNodeWrapper);
       configNodeRestartStatus = client.restartConfigNode(configNodeRestartReq);
       Assert.assertEquals(
           TSStatusCode.REJECT_NODE_START.getStatusCode(), configNodeRestartStatus.getCode());
-      Assert.assertTrue(
-          configNodeRestartStatus
-              .getMessage()
-              .contains("exists an alive Node with the same nodeId"));
+      Assert.assertTrue(configNodeRestartStatus.getMessage().contains("have been changed"));
+      registeredConfigNodeWrapper.setConsensusPort(originPort);
 
       int registeredDataNodeId = -1;
       showClusterResp = client.showCluster();
@@ -262,42 +273,6 @@ public class IoTDBClusterNodeErrorStartUpIT {
         }
       }
       Assert.assertNotEquals(-1, registeredDataNodeId);
-      dataNodeRestartReq =
-          ConfigNodeTestUtils.generateTDataNodeRestartReq(
-              TEST_CLUSTER_NAME, registeredDataNodeId, registeredDataNodeWrapper);
-      dataNodeRestartResp = client.restartDataNode(dataNodeRestartReq);
-      Assert.assertEquals(
-          TSStatusCode.REJECT_NODE_START.getStatusCode(),
-          dataNodeRestartResp.getStatus().getCode());
-      Assert.assertTrue(
-          dataNodeRestartResp
-              .getStatus()
-              .getMessage()
-              .contains("exists an alive Node with the same nodeId"));
-
-      // Shutdown and check
-      EnvFactory.getEnv().shutdownConfigNode(1);
-      EnvFactory.getEnv().shutdownDataNode(0);
-      EnvFactory.getEnv()
-          .ensureNodeStatus(
-              Arrays.asList(
-                  EnvFactory.getEnv().getConfigNodeWrapper(1),
-                  EnvFactory.getEnv().getDataNodeWrapper(0)),
-              Arrays.asList(NodeStatus.Unknown, NodeStatus.Unknown));
-
-      /* Restart and updatePeer */
-      // TODO: @Itami-sho, enable this test and delete it
-      int originPort = registeredConfigNodeWrapper.getConsensusPort();
-      registeredConfigNodeWrapper.setConsensusPort(-12345);
-      configNodeRestartReq =
-          ConfigNodeTestUtils.generateTConfigNodeRestartReq(
-              TEST_CLUSTER_NAME, registeredConfigNodeId, registeredConfigNodeWrapper);
-      configNodeRestartStatus = client.restartConfigNode(configNodeRestartReq);
-      Assert.assertEquals(
-          TSStatusCode.REJECT_NODE_START.getStatusCode(), configNodeRestartStatus.getCode());
-      Assert.assertTrue(configNodeRestartStatus.getMessage().contains("have been changed"));
-      registeredConfigNodeWrapper.setConsensusPort(originPort);
-
       originPort = registeredDataNodeWrapper.getInternalPort();
       registeredDataNodeWrapper.setInternalPort(-12345);
       dataNodeRestartReq =
diff --git a/integration-test/src/test/java/org/apache/iotdb/confignode/it/cluster/IoTDBClusterNodeGetterIT.java b/integration-test/src/test/java/org/apache/iotdb/confignode/it/cluster/IoTDBClusterNodeGetterIT.java
index 1c9b570859..351d69a303 100644
--- a/integration-test/src/test/java/org/apache/iotdb/confignode/it/cluster/IoTDBClusterNodeGetterIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/confignode/it/cluster/IoTDBClusterNodeGetterIT.java
@@ -16,6 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.iotdb.confignode.it.cluster;
 
 import org.apache.iotdb.common.rpc.thrift.TConfigNodeLocation;
diff --git a/integration-test/src/test/java/org/apache/iotdb/confignode/it/cluster/IoTDBClusterRestartIT.java b/integration-test/src/test/java/org/apache/iotdb/confignode/it/cluster/IoTDBClusterRestartIT.java
index fd6e275c68..66e44b9362 100644
--- a/integration-test/src/test/java/org/apache/iotdb/confignode/it/cluster/IoTDBClusterRestartIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/confignode/it/cluster/IoTDBClusterRestartIT.java
@@ -16,6 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.iotdb.confignode.it.cluster;
 
 import org.apache.iotdb.common.rpc.thrift.TConfigNodeLocation;