You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by sa...@apache.org on 2023/04/13 08:17:26 UTC

[ozone] branch master updated: HDDS-8406. Add OM DB update data size and sequence metrics (#4558)

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

sammichen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new fc97e4893c HDDS-8406. Add OM DB update data size and sequence metrics (#4558)
fc97e4893c is described below

commit fc97e4893c9625864ee32a0e95eba78858f7e60e
Author: Sammi Chen <sa...@apache.org>
AuthorDate: Thu Apr 13 16:17:18 2023 +0800

    HDDS-8406. Add OM DB update data size and sequence metrics (#4558)
---
 .../org/apache/hadoop/hdds/utils/db/RDBMetrics.java   | 19 +++++++++++++++++++
 .../org/apache/hadoop/hdds/utils/db/RDBStore.java     | 14 +++++++++++---
 2 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBMetrics.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBMetrics.java
index e4140c43c2..ded6007101 100644
--- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBMetrics.java
+++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBMetrics.java
@@ -56,6 +56,9 @@ public class RDBMetrics {
   private @Metric MutableCounterLong numDBKeyGetIfExistChecks;
   private @Metric MutableCounterLong numDBKeyGetIfExistMisses;
   private @Metric MutableCounterLong numDBKeyGetIfExistGets;
+  // WAL Update data size and sequence count
+  private @Metric MutableCounterLong walUpdateDataSize;
+  private @Metric MutableCounterLong walUpdateSequenceCount;
 
 
   public long getNumDBKeyGetIfExistGets() {
@@ -101,6 +104,22 @@ public class RDBMetrics {
     return numDBKeyMayExistMisses.value();
   }
 
+  public void incWalUpdateDataSize(long size) {
+    walUpdateDataSize.incr(size);
+  }
+
+  public long getWalUpdateDataSize() {
+    return walUpdateDataSize.value();
+  }
+
+  public void incWalUpdateSequenceCount(long count) {
+    walUpdateSequenceCount.incr(count);
+  }
+
+  public long getWalUpdateSequenceCount() {
+    return walUpdateSequenceCount.value();
+  }
+
   public static synchronized void unRegister() {
     instance = null;
     MetricsSystem ms = DefaultMetricsSystem.instance();
diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBStore.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBStore.java
index 92e95fc3a4..5bd993f86d 100644
--- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBStore.java
+++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBStore.java
@@ -390,9 +390,11 @@ public class RDBStore implements DBStore {
           long currSequenceNumber = result.sequenceNumber();
           if (checkValidStartingSeqNumber &&
               currSequenceNumber > 1 + sequenceNumber) {
-            throw new SequenceNumberNotFoundException("Unable to read data from"
-                + " RocksDB wal to get delta updates. It may have already been"
-                + " flushed to SSTs.");
+            throw new SequenceNumberNotFoundException("Unable to read full data"
+                + " from RocksDB wal to get delta updates. It may have"
+                + " partially been flushed to SSTs. Requested sequence number"
+                + " is " + sequenceNumber + " and first available sequence" +
+                " number is " + currSequenceNumber + " in wal.");
           }
           // If the above condition was not satisfied, then it is OK to reset
           // the flag.
@@ -428,6 +430,12 @@ public class RDBStore implements DBStore {
               + "This exception will not be thrown to the client ",
           sequenceNumber, e);
       dbUpdatesWrapper.setDBUpdateSuccess(false);
+    } finally {
+      if (dbUpdatesWrapper.getData().size() > 0) {
+        rdbMetrics.incWalUpdateDataSize(cumulativeDBUpdateLogBatchSize);
+        rdbMetrics.incWalUpdateSequenceCount(
+            dbUpdatesWrapper.getCurrentSequenceNumber() - sequenceNumber);
+      }
     }
     dbUpdatesWrapper.setLatestSequenceNumber(db.getLatestSequenceNumber());
     return dbUpdatesWrapper;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org