You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ta...@apache.org on 2023/03/16 07:24:05 UTC

[iotdb] branch master updated: [IOTDB-5682] Fix the update of nodeId in Metrics (#9344)

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

tanxinyu 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 d14f37af86 [IOTDB-5682] Fix the update of nodeId in Metrics (#9344)
d14f37af86 is described below

commit d14f37af8686dd7f8cdfb8cde60d422fe524688d
Author: ZhangHongYin <46...@users.noreply.github.com>
AuthorDate: Thu Mar 16 15:23:58 2023 +0800

    [IOTDB-5682] Fix the update of nodeId in Metrics (#9344)
---
 .../iotdb/confignode/conf/ConfigNodeDescriptor.java     |  2 +-
 .../org/apache/iotdb/confignode/service/ConfigNode.java | 17 +++++++++++++----
 .../org/apache/iotdb/metrics/config/MetricConfig.java   |  7 +++++--
 .../java/org/apache/iotdb/db/conf/IoTDBDescriptor.java  |  2 +-
 .../main/java/org/apache/iotdb/db/service/DataNode.java |  7 ++++---
 5 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
index d212c6819c..db7b8c0a11 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
@@ -134,7 +134,7 @@ public class ConfigNodeDescriptor {
         MetricConfigDescriptor.getInstance().loadProps(commonProperties);
         MetricConfigDescriptor.getInstance()
             .getMetricConfig()
-            .updateRpcInstance(conf.getClusterName(), conf.getConfigNodeId(), NodeType.CONFIGNODE);
+            .updateRpcInstance(conf.getClusterName(), NodeType.CONFIGNODE);
       }
     } else {
       LOGGER.warn(
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 bd66190163..e75e7039d2 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
@@ -42,6 +42,7 @@ import org.apache.iotdb.confignode.service.thrift.ConfigNodeRPCService;
 import org.apache.iotdb.confignode.service.thrift.ConfigNodeRPCServiceProcessor;
 import org.apache.iotdb.db.service.metrics.ProcessMetrics;
 import org.apache.iotdb.db.service.metrics.SystemMetrics;
+import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
 import org.apache.iotdb.metrics.metricsets.disk.DiskMetrics;
 import org.apache.iotdb.metrics.metricsets.jvm.JvmMetrics;
 import org.apache.iotdb.metrics.metricsets.logback.LogbackMetrics;
@@ -115,6 +116,9 @@ public class ConfigNode implements ConfigNodeMBean {
         }
 
         configManager.initConsensusManager();
+        setUpMetricService();
+        // Notice: We always set up Seed-ConfigNode's RPC service lastly to ensure
+        // that the external service is not provided until ConfigNode is fully available
         setUpRPCService();
         LOGGER.info(
             "{} has successfully restarted and joined the cluster: {}.",
@@ -145,8 +149,9 @@ public class ConfigNode implements ConfigNodeMBean {
                     SEED_CONFIG_NODE_ID,
                     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
+        setUpMetricService();
+        // Notice: 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();
         // The initial startup of Seed-ConfigNode finished
 
@@ -169,6 +174,7 @@ public class ConfigNode implements ConfigNodeMBean {
           ConfigNodeConstant.GLOBAL_NAME,
           CONF.getConfigNodeId(),
           CONF.getClusterName());
+      setUpMetricService();
 
       boolean isJoinedCluster = false;
       for (int retry = 0; retry < SCHEDULE_WAITING_RETRY_NUM; retry++) {
@@ -212,6 +218,11 @@ public class ConfigNode implements ConfigNodeMBean {
     registerManager.register(new JMXService());
     JMXService.registerMBean(this, mbeanName);
 
+    LOGGER.info("Successfully setup internal services.");
+  }
+
+  private void setUpMetricService() throws StartupException {
+    MetricConfigDescriptor.getInstance().getMetricConfig().setNodeId(CONF.getConfigNodeId());
     registerManager.register(MetricService.getInstance());
     // bind predefined metric sets
     MetricService.getInstance().addMetricSet(new JvmMetrics());
@@ -220,8 +231,6 @@ public class ConfigNode implements ConfigNodeMBean {
     MetricService.getInstance().addMetricSet(new SystemMetrics(false));
     MetricService.getInstance().addMetricSet(new DiskMetrics(IoTDBConstant.CN_ROLE));
     MetricService.getInstance().addMetricSet(new NetMetrics(IoTDBConstant.CN_ROLE));
-
-    LOGGER.info("Successfully setup internal services.");
   }
 
   private void initConfigManager() {
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
index 9d9b061847..2d551495d2 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
@@ -156,12 +156,15 @@ public class MetricConfig {
   }
 
   /** Update rpc address and rpc port of monitored node. */
-  public void updateRpcInstance(String clusterName, int nodeId, NodeType nodeType) {
+  public void updateRpcInstance(String clusterName, NodeType nodeType) {
     this.clusterName = clusterName;
-    this.nodeId = nodeId;
     this.nodeType = nodeType;
   }
 
+  public void setNodeId(int nodeId) {
+    this.nodeId = nodeId;
+  }
+
   /** Copy properties from another metric config. */
   public void copy(MetricConfig newMetricConfig) {
     metricFrameType = newMetricConfig.getMetricFrameType();
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index c708d6e402..29a9caf080 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -189,7 +189,7 @@ public class IoTDBDescriptor {
         MetricConfigDescriptor.getInstance().loadProps(commonProperties);
         MetricConfigDescriptor.getInstance()
             .getMetricConfig()
-            .updateRpcInstance(conf.getClusterName(), conf.getDataNodeId(), NodeType.DATANODE);
+            .updateRpcInstance(conf.getClusterName(), NodeType.DATANODE);
       }
     } else {
       logger.warn(
diff --git a/server/src/main/java/org/apache/iotdb/db/service/DataNode.java b/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
index 31e89349fe..45959def26 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
@@ -168,12 +168,12 @@ public class DataNode implements DataNodeMBean {
       // Active DataNode
       active();
 
-      // Setup rpc service
-      setUpRPCService();
-
       // Setup metric service
       setUpMetricService();
 
+      // Setup rpc service
+      setUpRPCService();
+
       // Serialize mutable system properties
       IoTDBStartCheck.getInstance().serializeMutableSystemPropertiesIfNecessary();
 
@@ -555,6 +555,7 @@ public class DataNode implements DataNodeMBean {
   }
 
   private void setUpMetricService() throws StartupException {
+    MetricConfigDescriptor.getInstance().getMetricConfig().setNodeId(config.getDataNodeId());
     registerManager.register(MetricService.getInstance());
 
     // init metric service