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/19 14:14:47 UTC

[iotdb] branch performace_overview_dashboard_cp created (now 11987e962c)

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

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


      at 11987e962c [IOTDB-5697] Only record engine cost for DataRegion in Performance Overview Dashboard (#9366)

This branch includes the following new commits:

     new 11987e962c [IOTDB-5697] Only record engine cost for DataRegion in Performance Overview Dashboard (#9366)

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[iotdb] 01/01: [IOTDB-5697] Only record engine cost for DataRegion in Performance Overview Dashboard (#9366)

Posted by ta...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 11987e962c60764cfe10582df07b8119e538684c
Author: Potato <ta...@apache.org>
AuthorDate: Sat Mar 18 18:08:47 2023 +0800

    [IOTDB-5697] Only record engine cost for DataRegion in Performance Overview Dashboard (#9366)
    
    * finish
    
    Signed-off-by: OneSizeFitQuorum <ta...@apache.org>
    
    * Fix SimpleSonsensus
    
    Signed-off-by: OneSizeFitQuorum <ta...@apache.org>
    
    * fix code smell
    
    Signed-off-by: OneSizeFitQuorum <ta...@apache.org>
    
    ---------
    
    Signed-off-by: OneSizeFitQuorum <ta...@apache.org>
---
 .../ratis/ApplicationStateMachineProxy.java        | 23 +++++++++++--------
 .../iotdb/consensus/ratis/RatisConsensus.java      |  4 ++--
 .../org/apache/iotdb/consensus/ratis/Utils.java    |  4 ++--
 .../ratis/metrics/IoTDBMetricRegistry.java         |  2 +-
 .../ratis/metrics/RatisMetricsManager.java         | 21 ++++++++++-------
 .../iotdb/consensus/simple/SimpleConsensus.java    | 26 +++++++++++++---------
 .../statemachine/DataRegionStateMachine.java       |  3 ++-
 7 files changed, 50 insertions(+), 33 deletions(-)

diff --git a/consensus/src/main/java/org/apache/iotdb/consensus/ratis/ApplicationStateMachineProxy.java b/consensus/src/main/java/org/apache/iotdb/consensus/ratis/ApplicationStateMachineProxy.java
index b256079623..aacb0743be 100644
--- a/consensus/src/main/java/org/apache/iotdb/consensus/ratis/ApplicationStateMachineProxy.java
+++ b/consensus/src/main/java/org/apache/iotdb/consensus/ratis/ApplicationStateMachineProxy.java
@@ -18,6 +18,7 @@
  */
 package org.apache.iotdb.consensus.ratis;
 
+import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.commons.service.metric.MetricService;
 import org.apache.iotdb.commons.service.metric.enums.Metric;
@@ -56,12 +57,13 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
 
 public class ApplicationStateMachineProxy extends BaseStateMachine {
+
   private final Logger logger = LoggerFactory.getLogger(ApplicationStateMachineProxy.class);
   private final IStateMachine applicationStateMachine;
   private final IStateMachine.RetryPolicy retryPolicy;
   private final SnapshotStorage snapshotStorage;
   private final RaftGroupId groupId;
-  private final String consensusGroupType;
+  private final TConsensusGroupType consensusGroupType;
 
   public ApplicationStateMachineProxy(IStateMachine stateMachine, RaftGroupId id) {
     applicationStateMachine = stateMachine;
@@ -173,14 +175,17 @@ public class ApplicationStateMachineProxy extends BaseStateMachine {
       }
     } while (shouldRetry);
     if (isLeader) {
-      MetricService.getInstance()
-          .timer(
-              System.nanoTime() - writeToStateMachineStartTime,
-              TimeUnit.NANOSECONDS,
-              Metric.PERFORMANCE_OVERVIEW_STORAGE_DETAIL.toString(),
-              MetricLevel.IMPORTANT,
-              Tag.STAGE.toString(),
-              PerformanceOverviewMetrics.ENGINE);
+      // only record time cost for data region in Performance Overview Dashboard
+      if (consensusGroupType == TConsensusGroupType.DataRegion) {
+        MetricService.getInstance()
+            .timer(
+                System.nanoTime() - writeToStateMachineStartTime,
+                TimeUnit.NANOSECONDS,
+                Metric.PERFORMANCE_OVERVIEW_STORAGE_DETAIL.toString(),
+                MetricLevel.IMPORTANT,
+                Tag.STAGE.toString(),
+                PerformanceOverviewMetrics.ENGINE);
+      }
       // statistic the time of write stateMachine
       RatisMetricsManager.getInstance()
           .recordWriteStateMachineCost(
diff --git a/consensus/src/main/java/org/apache/iotdb/consensus/ratis/RatisConsensus.java b/consensus/src/main/java/org/apache/iotdb/consensus/ratis/RatisConsensus.java
index 38242b56d4..7cac28eb17 100644
--- a/consensus/src/main/java/org/apache/iotdb/consensus/ratis/RatisConsensus.java
+++ b/consensus/src/main/java/org/apache/iotdb/consensus/ratis/RatisConsensus.java
@@ -19,6 +19,7 @@
 
 package org.apache.iotdb.consensus.ratis;
 
+import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.commons.client.ClientManager;
@@ -125,8 +126,7 @@ class RatisConsensus implements IConsensus {
   private final ConcurrentHashMap<File, MemorizedFileSizeCalc> calcMap = new ConcurrentHashMap<>();
 
   private final RatisMetricSet ratisMetricSet;
-
-  private String consensusGroupType = null;
+  private TConsensusGroupType consensusGroupType = null;
 
   public RatisConsensus(ConsensusConfig config, IStateMachine.Registry registry)
       throws IOException {
diff --git a/consensus/src/main/java/org/apache/iotdb/consensus/ratis/Utils.java b/consensus/src/main/java/org/apache/iotdb/consensus/ratis/Utils.java
index 7d7954a530..639d7e2c15 100644
--- a/consensus/src/main/java/org/apache/iotdb/consensus/ratis/Utils.java
+++ b/consensus/src/main/java/org/apache/iotdb/consensus/ratis/Utils.java
@@ -177,7 +177,7 @@ public class Utils {
     return TermIndex.valueOf(Long.parseLong(items[0]), Long.parseLong(items[1]));
   }
 
-  public static String getConsensusGroupTypeFromPrefix(String prefix) {
+  public static TConsensusGroupType getConsensusGroupTypeFromPrefix(String prefix) {
     TConsensusGroupType consensusGroupType;
     if (prefix.contains(DATA_REGION_GROUP)) {
       consensusGroupType = TConsensusGroupType.DataRegion;
@@ -186,7 +186,7 @@ public class Utils {
     } else {
       consensusGroupType = TConsensusGroupType.ConfigRegion;
     }
-    return consensusGroupType.toString();
+    return consensusGroupType;
   }
 
   public static void initRatisConfig(RaftProperties properties, RatisConfig config) {
diff --git a/consensus/src/main/java/org/apache/iotdb/consensus/ratis/metrics/IoTDBMetricRegistry.java b/consensus/src/main/java/org/apache/iotdb/consensus/ratis/metrics/IoTDBMetricRegistry.java
index 7846c61b89..065809b0ea 100644
--- a/consensus/src/main/java/org/apache/iotdb/consensus/ratis/metrics/IoTDBMetricRegistry.java
+++ b/consensus/src/main/java/org/apache/iotdb/consensus/ratis/metrics/IoTDBMetricRegistry.java
@@ -94,7 +94,7 @@ public class IoTDBMetricRegistry implements RatisMetricRegistry {
     this.metricService = service;
     prefix =
         MetricRegistry.name(
-            Utils.getConsensusGroupTypeFromPrefix(info.getPrefix()),
+            Utils.getConsensusGroupTypeFromPrefix(info.getPrefix()).toString(),
             info.getApplicationName(),
             info.getMetricsComponentName());
   }
diff --git a/consensus/src/main/java/org/apache/iotdb/consensus/ratis/metrics/RatisMetricsManager.java b/consensus/src/main/java/org/apache/iotdb/consensus/ratis/metrics/RatisMetricsManager.java
index b7d11a732f..a519caa1df 100644
--- a/consensus/src/main/java/org/apache/iotdb/consensus/ratis/metrics/RatisMetricsManager.java
+++ b/consensus/src/main/java/org/apache/iotdb/consensus/ratis/metrics/RatisMetricsManager.java
@@ -18,6 +18,7 @@
  */
 package org.apache.iotdb.consensus.ratis.metrics;
 
+import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
 import org.apache.iotdb.commons.service.metric.MetricService;
 import org.apache.iotdb.commons.service.metric.enums.Metric;
 import org.apache.iotdb.commons.service.metric.enums.Tag;
@@ -27,44 +28,48 @@ import java.util.concurrent.TimeUnit;
 
 public class RatisMetricsManager {
   private final MetricService metricService = MetricService.getInstance();
+
   /** Record the time cost in write locally stage. */
-  public void recordWriteLocallyCost(long costTimeInNanos, String consensusGroupType) {
+  public void recordWriteLocallyCost(long costTimeInNanos, TConsensusGroupType consensusGroupType) {
     metricService.timer(
         costTimeInNanos,
         TimeUnit.NANOSECONDS,
-        consensusGroupType + "_" + Metric.RATIS_CONSENSUS_WRITE,
+        consensusGroupType.toString() + "_" + Metric.RATIS_CONSENSUS_WRITE,
         MetricLevel.IMPORTANT,
         Tag.STAGE.toString(),
         RatisMetricSet.WRITE_LOCALLY);
   }
 
   /** Record the time cost in write remotely stage. */
-  public void recordWriteRemotelyCost(long costTimeInNanos, String consensusGroupType) {
+  public void recordWriteRemotelyCost(
+      long costTimeInNanos, TConsensusGroupType consensusGroupType) {
     metricService.timer(
         costTimeInNanos,
         TimeUnit.NANOSECONDS,
-        consensusGroupType + "_" + Metric.RATIS_CONSENSUS_WRITE,
+        consensusGroupType.toString() + "_" + Metric.RATIS_CONSENSUS_WRITE,
         MetricLevel.IMPORTANT,
         Tag.STAGE.toString(),
         RatisMetricSet.WRITE_REMOTELY);
   }
+
   /** Record the time cost in submit read request stage. */
-  public void recordReadRequestCost(long costTimeInNanos, String consensusGroupType) {
+  public void recordReadRequestCost(long costTimeInNanos, TConsensusGroupType consensusGroupType) {
     metricService.timer(
         costTimeInNanos,
         TimeUnit.NANOSECONDS,
-        consensusGroupType + "_" + Metric.RATIS_CONSENSUS_READ,
+        consensusGroupType.toString() + "_" + Metric.RATIS_CONSENSUS_READ,
         MetricLevel.IMPORTANT,
         Tag.STAGE.toString(),
         RatisMetricSet.SUBMIT_READ_REQUEST);
   }
 
   /** Record the time cost in write state machine stage. */
-  public void recordWriteStateMachineCost(long costTimeInNanos, String consensusGroupType) {
+  public void recordWriteStateMachineCost(
+      long costTimeInNanos, TConsensusGroupType consensusGroupType) {
     metricService.timer(
         costTimeInNanos,
         TimeUnit.NANOSECONDS,
-        consensusGroupType + "_" + Metric.RATIS_CONSENSUS_WRITE,
+        consensusGroupType.toString() + "_" + Metric.RATIS_CONSENSUS_WRITE,
         MetricLevel.IMPORTANT,
         Tag.STAGE.toString(),
         RatisMetricSet.WRITE_STATE_MACHINE);
diff --git a/consensus/src/main/java/org/apache/iotdb/consensus/simple/SimpleConsensus.java b/consensus/src/main/java/org/apache/iotdb/consensus/simple/SimpleConsensus.java
index e5db5ba9fd..27a1687e90 100644
--- a/consensus/src/main/java/org/apache/iotdb/consensus/simple/SimpleConsensus.java
+++ b/consensus/src/main/java/org/apache/iotdb/consensus/simple/SimpleConsensus.java
@@ -22,6 +22,7 @@ package org.apache.iotdb.consensus.simple;
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.commons.consensus.ConsensusGroupId;
+import org.apache.iotdb.commons.consensus.DataRegionId;
 import org.apache.iotdb.commons.service.metric.MetricService;
 import org.apache.iotdb.commons.service.metric.enums.Metric;
 import org.apache.iotdb.commons.service.metric.enums.PerformanceOverviewMetrics;
@@ -127,16 +128,21 @@ class SimpleConsensus implements IConsensus {
       status = new TSStatus(TSStatusCode.SYSTEM_READ_ONLY.getStatusCode());
       status.setMessage("Fail to do non-query operations because system is read-only.");
     } else {
-      long startWriteTime = System.nanoTime();
-      status = impl.write(request);
-      MetricService.getInstance()
-          .timer(
-              System.nanoTime() - startWriteTime,
-              TimeUnit.NANOSECONDS,
-              Metric.PERFORMANCE_OVERVIEW_STORAGE_DETAIL.toString(),
-              MetricLevel.IMPORTANT,
-              Tag.STAGE.toString(),
-              PerformanceOverviewMetrics.ENGINE);
+      if (groupId instanceof DataRegionId) {
+        long startWriteTime = System.nanoTime();
+        status = impl.write(request);
+        // only record time cost for data region in Performance Overview Dashboard
+        MetricService.getInstance()
+            .timer(
+                System.nanoTime() - startWriteTime,
+                TimeUnit.NANOSECONDS,
+                Metric.PERFORMANCE_OVERVIEW_STORAGE_DETAIL.toString(),
+                MetricLevel.IMPORTANT,
+                Tag.STAGE.toString(),
+                PerformanceOverviewMetrics.ENGINE);
+      } else {
+        status = impl.write(request);
+      }
     }
     return ConsensusWriteResponse.newBuilder().setStatus(status).build();
   }
diff --git a/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/DataRegionStateMachine.java b/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/DataRegionStateMachine.java
index 4ce6d3fd9d..41b54c50df 100644
--- a/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/DataRegionStateMachine.java
+++ b/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/DataRegionStateMachine.java
@@ -181,7 +181,8 @@ public class DataRegionStateMachine extends BaseStateMachine {
     }
 
     InsertNode result;
-    if (insertNodes.get(0) instanceof InsertTabletNode) { // merge to InsertMultiTabletsNode
+    // merge to InsertMultiTabletsNode
+    if (insertNodes.get(0) instanceof InsertTabletNode) {
       List<Integer> index = new ArrayList<>(size);
       List<InsertTabletNode> insertTabletNodes = new ArrayList<>(size);
       int i = 0;