shizy818 commented on code in PR #18561:
URL: https://github.com/apache/iotdb/pull/18561#discussion_r3913045428


##########
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/client/ConfigNodeInfo.java:
##########
@@ -19,137 +19,18 @@
 
 package org.apache.iotdb.db.protocol.client;
 
-import org.apache.iotdb.common.rpc.thrift.TEndPoint;
-import org.apache.iotdb.commons.consensus.ConfigRegionId;
-import org.apache.iotdb.commons.exception.BadNodeUrlException;
-import org.apache.iotdb.commons.exception.StartupException;
-import org.apache.iotdb.commons.file.SystemPropertiesHandler;
-import org.apache.iotdb.commons.utils.NodeUrlUtils;
+import org.apache.iotdb.commons.client.AbstractConfigNodeInfo;
 import org.apache.iotdb.db.conf.DataNodeSystemPropertiesHandler;
-import org.apache.iotdb.db.i18n.DataNodeMiscMessages;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-public class ConfigNodeInfo {
-  private static final Logger logger = 
LoggerFactory.getLogger(ConfigNodeInfo.class);
-
-  private static final String CONFIG_NODE_LIST = "config_node_list";
-
-  private final ReentrantReadWriteLock configNodeInfoReadWriteLock;
-
-  /** latest config nodes. */
-  private final Set<TEndPoint> onlineConfigNodes;
-
-  public static final ConfigRegionId CONFIG_REGION_ID = new ConfigRegionId(0);
-
-  SystemPropertiesHandler systemPropertiesHandler = 
DataNodeSystemPropertiesHandler.getInstance();
+public class ConfigNodeInfo extends AbstractConfigNodeInfo {
 
   private ConfigNodeInfo() {
-    this.configNodeInfoReadWriteLock = new ReentrantReadWriteLock();
-    this.onlineConfigNodes = new HashSet<>();
-  }
-
-  public static void reinitializeStatics() {
-    ConfigNodeInfoHolder.INSTANCE = new ConfigNodeInfo();
-  }
-
-  /** Update ConfigNodeList both in memory and system.properties file */
-  public boolean updateConfigNodeList(List<TEndPoint> latestConfigNodes) {
-    long startTime = System.currentTimeMillis();
-    // Check whether the config nodes are latest or not
-    configNodeInfoReadWriteLock.readLock().lock();
-    try {
-      if (onlineConfigNodes.size() == latestConfigNodes.size()
-          && onlineConfigNodes.containsAll(latestConfigNodes)) {
-        return true;
-      }
-    } finally {
-      configNodeInfoReadWriteLock.readLock().unlock();
-    }
-
-    // Update config nodes
-    configNodeInfoReadWriteLock.writeLock().lock();
-    try {
-      onlineConfigNodes.clear();
-      onlineConfigNodes.addAll(latestConfigNodes);
-      storeConfigNodeList();
-      long endTime = System.currentTimeMillis();
-      logger.info(
-          DataNodeMiscMessages.UPDATE_CONFIG_NODE_SUCCESSFULLY,
-          onlineConfigNodes,
-          (endTime - startTime));
-    } catch (IOException e) {
-      logger.error(DataNodeMiscMessages.UPDATE_CONFIG_NODE_FAILED, e);
-      return false;
-    } finally {
-      configNodeInfoReadWriteLock.writeLock().unlock();
-    }
-    return true;
-  }
-
-  /**
-   * Call this method to store config node list.
-   *
-   * @throws IOException if properties deserialization or configNode list 
serialization failed.
-   */
-  public void storeConfigNodeList() throws IOException {
-    if (!systemPropertiesHandler.fileExist()) {
-      logger.info(DataNodeMiscMessages.SYSTEM_PROPERTIES_NOT_EXIST);
-      return;
-    }
-    systemPropertiesHandler.put(
-        CONFIG_NODE_LIST, NodeUrlUtils.convertTEndPointUrls(new 
ArrayList<>(onlineConfigNodes)));
+    super(DataNodeSystemPropertiesHandler.getInstance());
   }
 
-  public void loadConfigNodeList() throws StartupException {
-    long startTime = System.currentTimeMillis();
-    // properties contain CONFIG_NODE_LIST only when start as Data node
-    configNodeInfoReadWriteLock.writeLock().lock();
-    try {
-      Properties properties = systemPropertiesHandler.read();
-
-      if (properties.containsKey(CONFIG_NODE_LIST)) {
-        onlineConfigNodes.clear();
-        onlineConfigNodes.addAll(
-            
NodeUrlUtils.parseTEndPointUrls(properties.getProperty(CONFIG_NODE_LIST)));
-      }
-      if (onlineConfigNodes.isEmpty()) {
-        throw new StartupException(
-            DataNodeMiscMessages
-                
.MISC_EXCEPTION_REMOVING_IS_ONLY_ALLOWED_IN_AN_ENVIRONMENT_WHERE_THE_DATANODE_5A3E1FEA);
-      }
-      long endTime = System.currentTimeMillis();
-      logger.info(
-          DataNodeMiscMessages.LOAD_CONFIG_NODE_SUCCESSFULLY,
-          onlineConfigNodes,
-          (endTime - startTime));
-    } catch (IOException e) {
-      throw new RuntimeException(e);
-    } catch (BadNodeUrlException e) {
-      logger.error(DataNodeMiscMessages.CANNOT_PARSE_CONFIG_NODE_LIST);
-    } finally {
-      configNodeInfoReadWriteLock.writeLock().unlock();
-    }
-  }
-
-  public List<TEndPoint> getLatestConfigNodes() {
-    List<TEndPoint> result;
-    configNodeInfoReadWriteLock.readLock().lock();
-    try {
-      result = new ArrayList<>(onlineConfigNodes);
-    } finally {
-      configNodeInfoReadWriteLock.readLock().unlock();
-    }
-    return result;
+  @Override
+  protected String getNodeTypeName() {
+    return "datanode";

Review Comment:
   Just try to follow original logs:
   "Failed to connect to ConfigNode {} from DataNode {} ..."
   "Removing is only allowed in an environment where the datanode has been 
successfully ..."



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to