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

xingtanzjr 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 1c1b0596e0 [IOTDB-4094] Perfect the process of remove-confignode 
(#7135)
1c1b0596e0 is described below

commit 1c1b0596e09bd312d682538bbf48190f98460b74
Author: Beyyes <[email protected]>
AuthorDate: Tue Aug 30 16:11:08 2022 +0800

    [IOTDB-4094] Perfect the process of remove-confignode (#7135)
---
 .../async/datanode/AsyncDataNodeClientPool.java    |  6 +--
 .../sync/confignode/SyncConfigNodeClientPool.java  | 12 +++--
 .../sync/datanode/SyncDataNodeClientPool.java      |  2 +-
 .../confignode/conf/ConfigNodeRemoveCheck.java     | 10 ++---
 .../confignode/conf/ConfigNodeStartupCheck.java    | 38 ++++++++--------
 .../iotdb/confignode/service/ConfigNode.java       | 51 ++++++++++++----------
 .../confignode/service/ConfigNodeCommandLine.java  |  6 ++-
 .../db/mpp/common/header/ColumnHeaderConstant.java |  3 +-
 8 files changed, 68 insertions(+), 60 deletions(-)

diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/client/async/datanode/AsyncDataNodeClientPool.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/client/async/datanode/AsyncDataNodeClientPool.java
index ea3f58b958..557d898ca3 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/client/async/datanode/AsyncDataNodeClientPool.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/client/async/datanode/AsyncDataNodeClientPool.java
@@ -65,7 +65,7 @@ public class AsyncDataNodeClientPool {
 
   private final IClientManager<TEndPoint, AsyncDataNodeInternalServiceClient> 
clientManager;
 
-  private final int retryNum = 6;
+  private static final int MAX_RETRY_NUM = 6;
 
   private AsyncDataNodeClientPool() {
     clientManager =
@@ -91,7 +91,7 @@ public class AsyncDataNodeClientPool {
     if (dataNodeLocationMap.isEmpty()) {
       return;
     }
-    for (int retry = 0; retry < retryNum; retry++) {
+    for (int retry = 0; retry < MAX_RETRY_NUM; retry++) {
       CountDownLatch countDownLatch = new 
CountDownLatch(dataNodeLocationMap.size());
       for (TDataNodeLocation targetDataNode : dataNodeLocationMap.values()) {
         AbstractRetryHandler handler;
@@ -269,7 +269,7 @@ public class AsyncDataNodeClientPool {
     if (dataNodeLocationMap.isEmpty()) {
       return new HashMap<>();
     }
-    for (int retry = 0; retry < retryNum; retry++) {
+    for (int retry = 0; retry < MAX_RETRY_NUM; retry++) {
       index = 0;
       CountDownLatch countDownLatch = new 
CountDownLatch(dataNodeLocationMap.size());
       for (Map.Entry<String, List<TRegionReplicaSet>> entry :
diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/client/sync/confignode/SyncConfigNodeClientPool.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/client/sync/confignode/SyncConfigNodeClientPool.java
index a596b7e9f0..de74066c1b 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/client/sync/confignode/SyncConfigNodeClientPool.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/client/sync/confignode/SyncConfigNodeClientPool.java
@@ -42,7 +42,7 @@ public class SyncConfigNodeClientPool {
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(SyncConfigNodeClientPool.class);
 
-  private static final int retryNum = 6;
+  private static final int MAX_RETRY_NUM = 6;
 
   private final IClientManager<TEndPoint, SyncConfigNodeIServiceClient> 
clientManager;
 
@@ -66,8 +66,9 @@ public class SyncConfigNodeClientPool {
 
   public Object sendSyncRequestToConfigNodeWithRetry(
       TEndPoint endPoint, Object req, ConfigNodeRequestType requestType) {
+
     Throwable lastException = null;
-    for (int retry = 0; retry < retryNum; retry++) {
+    for (int retry = 0; retry < MAX_RETRY_NUM; retry++) {
       try (SyncConfigNodeIServiceClient client = 
clientManager.borrowClient(endPoint)) {
         switch (requestType) {
           case REGISTER_CONFIG_NODE:
@@ -101,11 +102,8 @@ public class SyncConfigNodeClientPool {
       }
     }
     LOGGER.error("{} failed on ConfigNode {}", requestType, endPoint, 
lastException);
-    switch (requestType) {
-      default:
-        return RpcUtils.getStatus(
-            TSStatusCode.ALL_RETRY_FAILED, "All retry failed due to" + 
lastException.getMessage());
-    }
+    return RpcUtils.getStatus(
+        TSStatusCode.ALL_RETRY_FAILED, "All retry failed due to: " + 
lastException.getMessage());
   }
 
   /**
diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/client/sync/datanode/SyncDataNodeClientPool.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/client/sync/datanode/SyncDataNodeClientPool.java
index 690acb8e90..0c85ffda88 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/client/sync/datanode/SyncDataNodeClientPool.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/client/sync/datanode/SyncDataNodeClientPool.java
@@ -110,7 +110,7 @@ public class SyncDataNodeClientPool {
     }
     LOGGER.error("{} failed on DataNode {}", requestType, endPoint, 
lastException);
     return new TSStatus(TSStatusCode.ALL_RETRY_FAILED.getStatusCode())
-        .setMessage("All retry failed due to" + lastException.getMessage());
+        .setMessage("All retry failed due to: " + lastException.getMessage());
   }
 
   public void deleteRegions(Set<TRegionReplicaSet> deletedRegionSet) {
diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeRemoveCheck.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeRemoveCheck.java
index 894e712374..d48eaaf06e 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeRemoveCheck.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeRemoveCheck.java
@@ -39,14 +39,14 @@ import java.util.Properties;
 public class ConfigNodeRemoveCheck {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(ConfigNodeStartupCheck.class);
 
-  private static final ConfigNodeConfig conf = 
ConfigNodeDescriptor.getInstance().getConf();
+  private static final ConfigNodeConfig CONF = 
ConfigNodeDescriptor.getInstance().getConf();
 
   private final File systemPropertiesFile;
   private final Properties systemProperties;
 
   public ConfigNodeRemoveCheck() {
     systemPropertiesFile =
-        new File(conf.getSystemDir() + File.separator + 
ConfigNodeConstant.SYSTEM_FILE_NAME);
+        new File(CONF.getSystemDir() + File.separator + 
ConfigNodeConstant.SYSTEM_FILE_NAME);
     systemProperties = new Properties();
   }
 
@@ -62,7 +62,7 @@ public class ConfigNodeRemoveCheck {
           getConfigNodeList().stream()
               .filter(e -> e.getInternalEndPoint().equals(endPoint))
               .findFirst()
-              .get();
+              .orElse(null);
     } catch (IOException | BadNodeUrlException e) {
       LOGGER.error("Load system properties file failed.", e);
     }
@@ -70,7 +70,7 @@ public class ConfigNodeRemoveCheck {
     return nodeLocation;
   }
 
-  public void removeConfigNode(TConfigNodeLocation nodeLocation)
+  public void removeConfigNode(TConfigNodeLocation removedNode)
       throws BadNodeUrlException, IOException {
     TSStatus status = new TSStatus();
     for (TConfigNodeLocation configNodeLocation : getConfigNodeList()) {
@@ -79,7 +79,7 @@ public class ConfigNodeRemoveCheck {
               SyncConfigNodeClientPool.getInstance()
                   .sendSyncRequestToConfigNodeWithRetry(
                       configNodeLocation.getInternalEndPoint(),
-                      nodeLocation,
+                      removedNode,
                       ConfigNodeRequestType.REMOVE_CONFIG_NODE);
       if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
         break;
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 73c1f5ab20..4afab64920 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
@@ -38,7 +38,7 @@ public class ConfigNodeStartupCheck {
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(ConfigNodeStartupCheck.class);
 
-  private static final ConfigNodeConfig conf = 
ConfigNodeDescriptor.getInstance().getConf();
+  private static final ConfigNodeConfig CONF = 
ConfigNodeDescriptor.getInstance().getConf();
 
   public void startUpCheck() throws StartupException, IOException, 
ConfigurationException {
     checkGlobalConfig();
@@ -52,60 +52,60 @@ public class ConfigNodeStartupCheck {
   private void checkGlobalConfig() throws ConfigurationException {
     // When the ConfigNode consensus protocol is set to StandAlone,
     // the target_config_nodes needs to point to itself
-    if 
(conf.getConfigNodeConsensusProtocolClass().equals(ConsensusFactory.StandAloneConsensus)
-        && 
(!conf.getInternalAddress().equals(conf.getTargetConfigNode().getIp())
-            || conf.getInternalPort() != 
conf.getTargetConfigNode().getPort())) {
+    if 
(CONF.getConfigNodeConsensusProtocolClass().equals(ConsensusFactory.StandAloneConsensus)
+        && 
(!CONF.getInternalAddress().equals(CONF.getTargetConfigNode().getIp())
+            || CONF.getInternalPort() != 
CONF.getTargetConfigNode().getPort())) {
       throw new ConfigurationException(
           IoTDBConstant.TARGET_CONFIG_NODES,
-          conf.getTargetConfigNode().getIp() + ":" + 
conf.getTargetConfigNode().getPort(),
-          conf.getInternalAddress() + ":" + conf.getInternalPort());
+          CONF.getTargetConfigNode().getIp() + ":" + 
CONF.getTargetConfigNode().getPort(),
+          CONF.getInternalAddress() + ":" + CONF.getInternalPort());
     }
 
     // When the data region consensus protocol is set to StandAlone,
     // the data replication factor must be 1
-    if 
(conf.getDataRegionConsensusProtocolClass().equals(ConsensusFactory.StandAloneConsensus)
-        && conf.getDataReplicationFactor() != 1) {
+    if 
(CONF.getDataRegionConsensusProtocolClass().equals(ConsensusFactory.StandAloneConsensus)
+        && CONF.getDataReplicationFactor() != 1) {
       throw new ConfigurationException(
           "data_replication_factor",
-          String.valueOf(conf.getDataReplicationFactor()),
+          String.valueOf(CONF.getDataReplicationFactor()),
           String.valueOf(1));
     }
 
     // When the schema region consensus protocol is set to StandAlone,
     // the schema replication factor must be 1
-    if 
(conf.getSchemaRegionConsensusProtocolClass().equals(ConsensusFactory.StandAloneConsensus)
-        && conf.getSchemaReplicationFactor() != 1) {
+    if 
(CONF.getSchemaRegionConsensusProtocolClass().equals(ConsensusFactory.StandAloneConsensus)
+        && CONF.getSchemaReplicationFactor() != 1) {
       throw new ConfigurationException(
           "schema_replication_factor",
-          String.valueOf(conf.getSchemaReplicationFactor()),
+          String.valueOf(CONF.getSchemaReplicationFactor()),
           String.valueOf(1));
     }
 
     // When the schema region consensus protocol is set to 
MultiLeaderConsensus,
     // we should report an error
-    if (conf.getSchemaRegionConsensusProtocolClass()
+    if (CONF.getSchemaRegionConsensusProtocolClass()
         .equals(ConsensusFactory.MultiLeaderConsensus)) {
       throw new ConfigurationException(
           "schema_region_consensus_protocol_class",
-          String.valueOf(conf.getSchemaRegionConsensusProtocolClass()),
+          String.valueOf(CONF.getSchemaRegionConsensusProtocolClass()),
           String.format(
               "%s or %s", ConsensusFactory.StandAloneConsensus, 
ConsensusFactory.RatisConsensus));
     }
 
-    if (!conf.getRoutingPolicy().equals(RouteBalancer.LEADER_POLICY)
-        && !conf.getRoutingPolicy().equals(RouteBalancer.GREEDY_POLICY)) {
+    if (!CONF.getRoutingPolicy().equals(RouteBalancer.LEADER_POLICY)
+        && !CONF.getRoutingPolicy().equals(RouteBalancer.GREEDY_POLICY)) {
       throw new ConfigurationException(
-          "routing_policy", conf.getRoutingPolicy(), "leader or greedy");
+          "routing_policy", CONF.getRoutingPolicy(), "leader or greedy");
     }
   }
 
   private void createDirsIfNecessary() throws IOException {
     // If systemDir does not exist, create systemDir
-    File systemDir = new File(conf.getSystemDir());
+    File systemDir = new File(CONF.getSystemDir());
     createDirIfEmpty(systemDir);
 
     // If consensusDir does not exist, create consensusDir
-    File consensusDir = new File(conf.getConsensusDir());
+    File consensusDir = new File(CONF.getConsensusDir());
     createDirIfEmpty(consensusDir);
   }
 
diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java 
b/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java
index fd3ad986f8..fafa4f3e68 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java
@@ -51,14 +51,14 @@ public class ConfigNode implements ConfigNodeMBean {
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(ConfigNode.class);
 
-  private static final ConfigNodeConfig conf = 
ConfigNodeDescriptor.getInstance().getConf();
+  private static final ConfigNodeConfig CONF = 
ConfigNodeDescriptor.getInstance().getConf();
+
+  private static final int SCHEDULE_WAITING_RETRY_NUM = 20;
 
   private final String mbeanName =
       String.format(
           "%s:%s=%s",
           ConfigNodeConstant.CONFIGNODE_PACKAGE, ConfigNodeConstant.JMX_TYPE, 
"ConfigNode");
-
-  private static final int scheduleWaitingRetryNum = 20;
   private final RegisterManager registerManager = new RegisterManager();
 
   private ConfigManager configManager;
@@ -97,8 +97,8 @@ public class ConfigNode implements ConfigNodeMBean {
             .applyConfigNode(
                 new TConfigNodeLocation(
                     0,
-                    new TEndPoint(conf.getInternalAddress(), 
conf.getInternalPort()),
-                    new TEndPoint(conf.getInternalAddress(), 
conf.getConsensusPort())));
+                    new TEndPoint(CONF.getInternalAddress(), 
CONF.getInternalPort()),
+                    new TEndPoint(CONF.getInternalAddress(), 
CONF.getConsensusPort())));
         // We always set up Seed-ConfigNode's RPC service lastly to ensure that
         // the external service is not provided until Seed-ConfigNode is fully 
initialized
         setUpRPCService();
@@ -120,7 +120,7 @@ public class ConfigNode implements ConfigNodeMBean {
           ConfigNodeConstant.GLOBAL_NAME);
 
       boolean isJoinedCluster = false;
-      for (int retry = 0; retry < scheduleWaitingRetryNum; retry++) {
+      for (int retry = 0; retry < SCHEDULE_WAITING_RETRY_NUM; retry++) {
         if 
(configManager.getConsensusManager().getConsensusImpl().getAllConsensusGroupIds().size()
             > 0) {
           isJoinedCluster = true;
@@ -173,9 +173,9 @@ public class ConfigNode implements ConfigNodeMBean {
 
     // Setup UDFService
     registerManager.register(
-        UDFExecutableManager.setupAndGetInstance(conf.getTemporaryLibDir(), 
conf.getUdfLibDir()));
-    
registerManager.register(UDFClassLoaderManager.setupAndGetInstance(conf.getUdfLibDir()));
-    
registerManager.register(UDFRegistrationService.setupAndGetInstance(conf.getSystemUdfDir()));
+        UDFExecutableManager.setupAndGetInstance(CONF.getTemporaryLibDir(), 
CONF.getUdfLibDir()));
+    
registerManager.register(UDFClassLoaderManager.setupAndGetInstance(CONF.getUdfLibDir()));
+    
registerManager.register(UDFRegistrationService.setupAndGetInstance(CONF.getSystemUdfDir()));
 
     // Setup MetricService
     registerManager.register(MetricService.getInstance());
@@ -190,21 +190,26 @@ public class ConfigNode implements ConfigNodeMBean {
         new TConfigNodeRegisterReq(
             new TConfigNodeLocation(
                 -1,
-                new TEndPoint(conf.getInternalAddress(), 
conf.getInternalPort()),
-                new TEndPoint(conf.getInternalAddress(), 
conf.getConsensusPort())),
-            conf.getDataRegionConsensusProtocolClass(),
-            conf.getSchemaRegionConsensusProtocolClass(),
-            conf.getSeriesPartitionSlotNum(),
-            conf.getSeriesPartitionExecutorClass(),
+                new TEndPoint(CONF.getInternalAddress(), 
CONF.getInternalPort()),
+                new TEndPoint(CONF.getInternalAddress(), 
CONF.getConsensusPort())),
+            CONF.getDataRegionConsensusProtocolClass(),
+            CONF.getSchemaRegionConsensusProtocolClass(),
+            CONF.getSeriesPartitionSlotNum(),
+            CONF.getSeriesPartitionExecutorClass(),
             CommonDescriptor.getInstance().getConfig().getDefaultTTL(),
-            conf.getTimePartitionInterval(),
-            conf.getSchemaReplicationFactor(),
-            conf.getSchemaRegionPerDataNode(),
-            conf.getDataReplicationFactor(),
-            conf.getDataRegionPerProcessor(),
-            conf.getReadConsistencyLevel());
-
-    TEndPoint targetConfigNode = conf.getTargetConfigNode();
+            CONF.getTimePartitionInterval(),
+            CONF.getSchemaReplicationFactor(),
+            CONF.getSchemaRegionPerDataNode(),
+            CONF.getDataReplicationFactor(),
+            CONF.getDataRegionPerProcessor(),
+            CONF.getReadConsistencyLevel());
+
+    TEndPoint targetConfigNode = CONF.getTargetConfigNode();
+    if (targetConfigNode == null) {
+      LOGGER.error("The targetConfigNode setting in conf is empty");
+      throw new StartupException("The targetConfigNode setting in conf is 
empty");
+    }
+
     for (int retry = 0; retry < 3; retry++) {
       TSStatus status =
           (TSStatus)
diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNodeCommandLine.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNodeCommandLine.java
index ae36f91a92..3b71295da9 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNodeCommandLine.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNodeCommandLine.java
@@ -87,6 +87,9 @@ public class ConfigNodeCommandLine extends ServerCommandLine {
         LOGGER.error("Meet error when doing remove", e);
         return -1;
       }
+    } else {
+      LOGGER.error("Unsupported startup mode: {}", mode);
+      return -1;
     }
 
     return 0;
@@ -104,7 +107,8 @@ public class ConfigNodeCommandLine extends 
ServerCommandLine {
       TConfigNodeLocation removeConfigNodeLocation =
           ConfigNodeRemoveCheck.getInstance().removeCheck(endPoint);
       if (removeConfigNodeLocation == null) {
-        LOGGER.error("The ConfigNode not in the Cluster.");
+        LOGGER.error(
+            "The ConfigNode to be removed is not in the cluster, please check 
the ip:port input.");
         return;
       }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
index 2200a3ecc1..9a2d76f068 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
@@ -76,6 +76,7 @@ public class ColumnHeaderConstant {
   // column names for show region statement
   public static final String COLUMN_REGION_ID = "RegionId";
   public static final String COLUMN_TYPE = "Type";
+  public static final String COLUMN_SHOW_REGION_STORAGE_GROUP = "Storage 
Group";
   public static final String COLUMN_DATANODE_ID = "DataNodeId";
   public static final String COLUMN_SERIES_SLOTS = "SeriesSlots";
   public static final String COLUMN_TIME_SLOTS = "TimeSlots";
@@ -184,7 +185,7 @@ public class ColumnHeaderConstant {
           new ColumnHeader(COLUMN_REGION_ID, TSDataType.INT32),
           new ColumnHeader(COLUMN_TYPE, TSDataType.TEXT),
           new ColumnHeader(COLUMN_STATUS, TSDataType.TEXT),
-          new ColumnHeader(COLUMN_STORAGE_GROUP, TSDataType.TEXT),
+          new ColumnHeader(COLUMN_SHOW_REGION_STORAGE_GROUP, TSDataType.TEXT),
           new ColumnHeader(COLUMN_SERIES_SLOTS, TSDataType.INT64),
           new ColumnHeader(COLUMN_TIME_SLOTS, TSDataType.INT64),
           new ColumnHeader(COLUMN_DATANODE_ID, TSDataType.INT32),

Reply via email to