You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@iotdb.apache.org by GitBox <gi...@apache.org> on 2022/08/09 06:36:00 UTC

[GitHub] [iotdb] Beyyes commented on a diff in pull request #6923: [IOTDB-4038] Add the leader metrics to the cluster

Beyyes commented on code in PR #6923:
URL: https://github.com/apache/iotdb/pull/6923#discussion_r940949011


##########
confignode/src/main/java/org/apache/iotdb/confignode/manager/load/LoadManager.java:
##########
@@ -590,7 +591,54 @@ public int getUnknownDataNodesNum() {
     return allDataNodes.size();
   }
 
-  public void addMetrics() {
+  /**
+   * Get the LeaderCount of each DataNodeId
+   *
+   * @return Map<DataNodeId, LeaderCount>
+   */
+  public Map<Integer, Integer> getLeadershipCountByDatanode() {
+    Map<Integer, Integer> idToCountMap = new ConcurrentHashMap<>();
+
+    regionGroupCacheMap.forEach(

Review Comment:
   602-610 can be replaced with `regionGroupCacheMap.forEach(
           (consensusGroupId, regionGroupCache) -> idToCountMap.merge(regionGroupCache.getLeaderDataNodeId(), 1, Integer::sum));`



##########
confignode/src/main/java/org/apache/iotdb/confignode/manager/load/LoadManager.java:
##########
@@ -590,7 +591,54 @@ public int getUnknownDataNodesNum() {
     return allDataNodes.size();
   }
 
-  public void addMetrics() {
+  /**
+   * Get the LeaderCount of each DataNodeId
+   *
+   * @return Map<DataNodeId, LeaderCount>
+   */
+  public Map<Integer, Integer> getLeadershipCountByDatanode() {
+    Map<Integer, Integer> idToCountMap = new ConcurrentHashMap<>();
+
+    regionGroupCacheMap.forEach(
+        (consensusGroupId, regionGroupCache) -> {
+          Integer count = idToCountMap.get(regionGroupCache.getLeaderDataNodeId());
+          if (count == null) {
+            idToCountMap.put(regionGroupCache.getLeaderDataNodeId(), 1);
+          } else {
+            idToCountMap.put(regionGroupCache.getLeaderDataNodeId(), count + 1);
+          }
+        });
+    return idToCountMap;
+  }
+
+  public void addLeaderCount() {
+    Map<Integer, Integer> idToCountMap = getLeadershipCountByDatanode();
+    getNodeManager()
+        .getRegisteredDataNodes(-1)
+        .forEach(
+            dataNodeInfo -> {
+              TDataNodeLocation dataNodeLocation = dataNodeInfo.getLocation();
+              int dataNodeId = dataNodeLocation.getDataNodeId();
+              if (idToCountMap.containsKey(dataNodeId)) {
+                String name =

Review Comment:
   I think this line can be extracted to a common method.
   It has been used 5 times.
   
   ![image](https://user-images.githubusercontent.com/6756545/183580729-37d638d8-884d-44cb-816b-9ae353375566.png)
   



##########
confignode/src/main/java/org/apache/iotdb/confignode/manager/load/LoadManager.java:
##########
@@ -590,7 +591,54 @@ public int getUnknownDataNodesNum() {
     return allDataNodes.size();
   }
 
-  public void addMetrics() {
+  /**
+   * Get the LeaderCount of each DataNodeId
+   *
+   * @return Map<DataNodeId, LeaderCount>
+   */
+  public Map<Integer, Integer> getLeadershipCountByDatanode() {

Review Comment:
   Is this method can be private?



-- 
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: reviews-unsubscribe@iotdb.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org