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 2022/01/10 02:19:27 UTC

[iotdb] 08/10: add group report

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

tanxinyu pushed a commit to branch master_performance
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 641bba84b7c7ef174c4430e3455c2700711c2735
Author: LebronAl <TX...@gmail.com>
AuthorDate: Thu Dec 9 17:44:40 2021 +0800

    add group report
---
 .../main/java/org/apache/iotdb/cluster/ClusterIoTDB.java   |  1 +
 .../org/apache/iotdb/cluster/server/member/RaftMember.java |  4 ++--
 .../apache/iotdb/cluster/server/monitor/NodeReport.java    | 14 ++++++++++++++
 .../iotdb/cluster/server/service/DataGroupEngine.java      | 12 +++++++++++-
 4 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java b/cluster/src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java
index de4be9f..71a2667 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java
@@ -211,6 +211,7 @@ public class ClusterIoTDB implements ClusterIoTDBMBean {
         NodeReport report = new NodeReport(thisNode);
         report.setMetaMemberReport(metaGroupMember.genMemberReport());
         report.setDataMemberReportList(dataGroupEngine.genMemberReports());
+        report.setGroups(dataGroupEngine.getGroupReports());
         logger.info(report.toString());
       } catch (Exception e) {
         logger.error("exception occurred when generating node report", e);
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/RaftMember.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/RaftMember.java
index 05ce76c..51fef37 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/RaftMember.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/RaftMember.java
@@ -177,7 +177,7 @@ public abstract class RaftMember implements RaftMemberMBean {
    */
   volatile long lastHeartbeatReceivedTime;
   /** the raft logs are all stored and maintained in the log manager */
-  RaftLogManager logManager;
+  public RaftLogManager logManager;
   /**
    * the single thread pool that runs the heartbeat thread, which send heartbeats to the follower
    * when this node is a leader, or start elections when this node is an elector.
@@ -193,7 +193,7 @@ public abstract class RaftMember implements RaftMemberMBean {
    * lastLogIndex when generating the previous member report, to show the log ingestion rate of the
    * member by comparing it with the current last log index.
    */
-  long lastReportedLogIndex;
+  public long lastReportedLogIndex;
   /** the thread pool that runs catch-up tasks */
   private ExecutorService catchUpService;
   /**
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/monitor/NodeReport.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/monitor/NodeReport.java
index 10538be..4d97875 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/monitor/NodeReport.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/monitor/NodeReport.java
@@ -24,6 +24,7 @@ import org.apache.iotdb.cluster.rpc.thrift.RaftNode;
 import org.apache.iotdb.cluster.server.NodeCharacter;
 import org.apache.iotdb.rpc.RpcStat;
 import org.apache.iotdb.rpc.RpcTransportFactory;
+import org.apache.iotdb.tsfile.utils.Pair;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -38,12 +39,17 @@ public class NodeReport {
   private Node thisNode;
   private MetaMemberReport metaMemberReport;
   private List<DataMemberReport> dataMemberReportList;
+  private Pair<Integer, Integer> groups;
 
   public NodeReport(Node thisNode) {
     this.thisNode = thisNode;
     dataMemberReportList = new ArrayList<>();
   }
 
+  public void setGroups(Pair<Integer, Integer> groups) {
+    this.groups = groups;
+  }
+
   public void setMetaMemberReport(MetaMemberReport metaMemberReport) {
     this.metaMemberReport = metaMemberReport;
   }
@@ -60,6 +66,14 @@ public class NodeReport {
     for (DataMemberReport dataMemberReport : dataMemberReportList) {
       stringBuilder.append(dataMemberReport).append(System.lineSeparator());
     }
+    stringBuilder
+        .append("DataGroupReport{curAllLogIndex=")
+        .append(groups.left)
+        .append(",prevAllLogIndex=")
+        .append(groups.right)
+        .append(",logIncrement=")
+        .append(groups.left - groups.right)
+        .append("}");
     return stringBuilder.toString();
   }
 
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/service/DataGroupEngine.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/service/DataGroupEngine.java
index 58593af..e51f03b 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/service/DataGroupEngine.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/service/DataGroupEngine.java
@@ -43,6 +43,7 @@ import org.apache.iotdb.db.exception.StartupException;
 import org.apache.iotdb.db.service.IService;
 import org.apache.iotdb.db.service.ServiceType;
 import org.apache.iotdb.db.utils.TestOnly;
+import org.apache.iotdb.tsfile.utils.Pair;
 
 import org.apache.thrift.async.AsyncMethodCallback;
 import org.apache.thrift.protocol.TProtocolFactory;
@@ -464,12 +465,21 @@ public class DataGroupEngine implements IService, DataGroupEngineMBean {
   public List<DataMemberReport> genMemberReports() {
     List<DataMemberReport> dataMemberReports = new ArrayList<>();
     for (DataGroupMember value : headerGroupMap.values()) {
-
       dataMemberReports.add(value.genReport());
     }
     return dataMemberReports;
   }
 
+  public Pair<Integer, Integer> getGroupReports() {
+    int last = 0;
+    int all = 0;
+    for (DataGroupMember value : headerGroupMap.values()) {
+      last += value.lastReportedLogIndex;
+      all += value.logManager.getLastLogIndex();
+    }
+    return new Pair<>(all, last);
+  }
+
   public Map<RaftNode, DataGroupMember> getHeaderGroupMap() {
     return headerGroupMap;
   }