You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ne...@apache.org on 2022/08/04 02:10:24 UTC

[iotdb] branch master updated: [IOTDB-4028] Npe in updateNodeLoadStatistic of LoadManager when cluster first starts. (#6886)

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

neuyilan 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 1bdf3f9598 [IOTDB-4028] Npe in updateNodeLoadStatistic of LoadManager when cluster first starts. (#6886)
1bdf3f9598 is described below

commit 1bdf3f9598f9378a8b9a086178c3a4132524588c
Author: 23931017wu <71...@users.noreply.github.com>
AuthorDate: Thu Aug 4 10:10:18 2022 +0800

    [IOTDB-4028] Npe in updateNodeLoadStatistic of LoadManager when cluster first starts. (#6886)
---
 .../org/apache/iotdb/confignode/manager/NodeManager.java  |  9 +++++++++
 .../apache/iotdb/confignode/manager/load/LoadManager.java |  4 +++-
 .../org/apache/iotdb/confignode/persistence/NodeInfo.java | 15 +++++++++++++++
 3 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/NodeManager.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/NodeManager.java
index 3e8d430ac0..4b5fa0bb38 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/NodeManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/NodeManager.java
@@ -182,6 +182,15 @@ public class NodeManager {
     return nodeInfo.getRegisteredDataNodeCount();
   }
 
+  /**
+   * Only leader use this interface
+   *
+   * @return The number of registered TotalNodes
+   */
+  public int getRegisteredNodeCount() {
+    return nodeInfo.getRegisteredNodeCount();
+  }
+
   /**
    * Only leader use this interface
    *
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/LoadManager.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/LoadManager.java
index 6c0a21cfd9..4ba890c195 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/LoadManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/LoadManager.java
@@ -292,7 +292,9 @@ public class LoadManager {
     if (isNeedBroadcast.get()) {
       broadcastLatestRegionRouteMap();
     }
-    addMetrics();
+    if (nodeCacheMap.size() == getNodeManager().getRegisteredNodeCount()) {
+      addMetrics();
+    }
   }
 
   private void broadcastLatestRegionRouteMap() {
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/NodeInfo.java b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/NodeInfo.java
index 3095fce6dc..4858afdfaa 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/NodeInfo.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/NodeInfo.java
@@ -268,6 +268,21 @@ public class NodeInfo implements SnapshotProcessor {
     }
     return result;
   }
+
+  /** Return the number of registered Nodes */
+  public int getRegisteredNodeCount() {
+    int result;
+    configNodeInfoReadWriteLock.readLock().lock();
+    dataNodeInfoReadWriteLock.readLock().lock();
+    try {
+      result = registeredConfigNodes.size() + registeredDataNodes.size();
+    } finally {
+      dataNodeInfoReadWriteLock.readLock().unlock();
+      configNodeInfoReadWriteLock.readLock().unlock();
+    }
+    return result;
+  }
+
   /** Return the number of total cpu cores in online DataNodes */
   public int getTotalCpuCoreCount() {
     int result = 0;