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

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

commit 9444341df2003e1b60d416137cad32eaa0930528
Author: Haonan <[email protected]>
AuthorDate: Fri Jun 27 11:34:33 2025 +0800

    Add WAL entry number for one TsFile metric (#15818)
---
 .../org/apache/iotdb/db/service/metrics/WritingMetrics.java | 13 +++++++++++++
 .../storageengine/dataregion/memtable/TsFileProcessor.java  |  7 +++++++
 2 files changed, 20 insertions(+)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/WritingMetrics.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/WritingMetrics.java
index d3cda241a9f..69cb7bb41dd 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/WritingMetrics.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/WritingMetrics.java
@@ -185,11 +185,13 @@ public class WritingMetrics implements IMetricSet {
   public static final String READ_WAL_BUFFER_COST_NS = "read_wal_buffer_cost";
   public static final String WRITE_WAL_BUFFER_COST_NS = 
"write_wal_buffer_cost";
   public static final String ENTRIES_COUNT = "entries_count";
+  public static final String WAL_ENTRY_NUM_FOR_ONE_TSFILE = 
"wal_entry_num_for_one_tsfile";
   public static final String WAL_QUEUE_CURRENT_MEM_COST = 
"wal_queue_current_mem_cost";
   public static final String WAL_QUEUE_MAX_MEM_COST = "wal_queue_max_mem_cost";
 
   private Histogram usedRatioHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
   private Histogram entriesCountHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+  private Histogram walEntryNumForOneTsFileHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
   private Histogram serializedWALBufferSizeHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
   private Histogram wroteWALBufferSizeHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
   private Histogram walCompressCostHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
@@ -216,6 +218,12 @@ public class WritingMetrics implements IMetricSet {
             MetricLevel.IMPORTANT,
             Tag.NAME.toString(),
             ENTRIES_COUNT);
+    walEntryNumForOneTsFileHistogram =
+        metricService.getOrCreateHistogram(
+            Metric.WAL_BUFFER.toString(),
+            MetricLevel.IMPORTANT,
+            Tag.NAME.toString(),
+            WAL_ENTRY_NUM_FOR_ONE_TSFILE);
 
     serializedWALBufferSizeHistogram =
         metricService.getOrCreateHistogram(
@@ -280,6 +288,7 @@ public class WritingMetrics implements IMetricSet {
         MetricType.AUTO_GAUGE, Metric.WAL_NODE_NUM.toString(), 
Tag.NAME.toString(), WAL_NODES_NUM);
     usedRatioHistogram = DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
     entriesCountHistogram = DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+    walEntryNumForOneTsFileHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
     Arrays.asList(
             USED_RATIO,
             ENTRIES_COUNT,
@@ -920,6 +929,10 @@ public class WritingMetrics implements IMetricSet {
     entriesCountHistogram.update(count);
   }
 
+  public void recordWALEntryNumForOneTsFile(long count) {
+    walEntryNumForOneTsFileHistogram.update(count);
+  }
+
   public void recordWALQueueMaxMemorySize(long size) {
     walQueueMaxMemSizeGauge.set(size);
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
index 451986b2f52..702b0fdc8ad 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
@@ -207,6 +207,8 @@ public class TsFileProcessor {
 
   public static final int MEMTABLE_NOT_EXIST = -1;
 
+  private int walEntryNum = 0;
+
   @SuppressWarnings("squid:S107")
   public TsFileProcessor(
       String storageGroupName,
@@ -315,6 +317,7 @@ public class TsFileProcessor {
       // recordScheduleWalCost
       costsForMetrics[2] += System.nanoTime() - startTime;
     }
+    walEntryNum++;
 
     startTime = System.nanoTime();
 
@@ -413,6 +416,7 @@ public class TsFileProcessor {
       // recordScheduleWalCost
       costsForMetrics[2] += System.nanoTime() - startTime;
     }
+    walEntryNum++;
 
     startTime = System.nanoTime();
 
@@ -528,6 +532,7 @@ public class TsFileProcessor {
     } finally {
       PERFORMANCE_OVERVIEW_METRICS.recordScheduleWalCost(System.nanoTime() - 
startTime);
     }
+    walEntryNum++;
 
     startTime = System.nanoTime();
 
@@ -1059,6 +1064,7 @@ public class TsFileProcessor {
   }
 
   public WALFlushListener logDeleteDataNodeInWAL(DeleteDataNode 
deleteDataNode) {
+    walEntryNum++;
     return walNode.log(workMemTable.getMemTableId(), deleteDataNode);
   }
 
@@ -1277,6 +1283,7 @@ public class TsFileProcessor {
         .recordMemTableLiveDuration(System.currentTimeMillis() - 
getWorkMemTableCreatedTime());
     WritingMetrics.getInstance()
         
.recordActiveMemTableCount(dataRegionInfo.getDataRegion().getDataRegionId(), 
-1);
+    WritingMetrics.getInstance().recordWALEntryNumForOneTsFile(walEntryNum);
     workMemTable = null;
     return FlushManager.getInstance().registerTsFileProcessor(this);
   }

Reply via email to