From 56cc2b9c1765ab1995c50f3e194c3ec701deed8e Mon Sep 17 00:00:00 2001 From: Sammi Chen Date: Tue, 11 Apr 2023 13:56:09 +0800 Subject: [PATCH 1/2] HDDS-8400. Expose rocksdb lastest sequence number throw metrics --- .../hadoop/hdds/utils/RocksDBStoreMetrics.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/RocksDBStoreMetrics.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/RocksDBStoreMetrics.java index 08e893a14f48..76d401fb870a 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/RocksDBStoreMetrics.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/RocksDBStoreMetrics.java @@ -105,6 +105,8 @@ public class RocksDBStoreMetrics implements MetricsSource { private static final String NUM_FILES_AT_LEVEL = "num_files_at_level"; private static final String SIZE_AT_LEVEL = "size_at_level"; + private static final String LAST_SEQUENCE_NUMBER = "last_sequence_number"; + public RocksDBStoreMetrics(Statistics statistics, RocksDatabase db, String dbName) { this.contextName = ROCKSDB_CONTEXT_PREFIX + dbName; @@ -130,7 +132,7 @@ public static RocksDBStoreMetrics create(Statistics statistics, MetricsSystem ms = DefaultMetricsSystem.instance(); MetricsSource metricsSource = ms.getSource(metrics.contextName); if (metricsSource != null) { - return (RocksDBStoreMetrics)metricsSource; + return (RocksDBStoreMetrics) metricsSource; } else { return ms.register(metrics.contextName, "RocksDB Metrics", metrics); } @@ -147,6 +149,7 @@ public void getMetrics(MetricsCollector metricsCollector, boolean b) { getHistogramData(rb); getTickerTypeData(rb); getDBPropertyData(rb); + getLatestSequenceNumber(rb); } /** @@ -168,7 +171,7 @@ private void getHistogramData(MetricsRecordBuilder rb) { try { Method method = HistogramData.class.getMethod("get" + histogramAttribute); - double metricValue = (double) method.invoke(histogram); + double metricValue = (double) method.invoke(histogram); rb.addGauge(Interns.info(histogramType.name() + "_" + histogramAttribute.toUpperCase(), "RocksDBStat"), metricValue); @@ -247,7 +250,7 @@ private Map>> computeSstFileStat() { Map> sizeStatPerCF = new HashMap<>(); Map numStat; Map sizeStat; - for (LiveFileMetaData file: liveFileMetaDataList) { + for (LiveFileMetaData file : liveFileMetaDataList) { numStat = numStatPerCF.get(file.level()); String cf = Strings.fromByteArray(file.columnFamilyName()); if (numStat != null) { @@ -278,13 +281,18 @@ private Map>> computeSstFileStat() { private void exportSstFileStat(MetricsRecordBuilder rb, Map> numStatPerCF, String metricName) { Map numStat; - for (Map.Entry> entry: numStatPerCF.entrySet()) { + for (Map.Entry> entry : numStatPerCF.entrySet()) { numStat = entry.getValue(); numStat.forEach((cf, v) -> rb.addCounter(Interns.info( - cf + "_" + metricName + entry.getKey(), "RocksDBProperty"), v)); + cf + "_" + metricName + entry.getKey(), "RocksDBProperty"), v)); rb.addCounter( Interns.info(metricName + entry.getKey(), "RocksDBProperty"), numStat.values().stream().mapToLong(p -> p.longValue()).sum()); } } + + private void getLatestSequenceNumber(MetricsRecordBuilder rb) { + rb.addCounter(Interns.info(LAST_SEQUENCE_NUMBER, "RocksDBStat"), + rocksDB.getLatestSequenceNumber()); + } } From 025d62d1f6974d70ec804f51f55b7d7dc61a1307 Mon Sep 17 00:00:00 2001 From: Sammi Chen Date: Tue, 11 Apr 2023 14:58:11 +0800 Subject: [PATCH 2/2] checkstyle --- .../java/org/apache/hadoop/hdds/utils/RocksDBStoreMetrics.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/RocksDBStoreMetrics.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/RocksDBStoreMetrics.java index 76d401fb870a..8e16556b6e88 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/RocksDBStoreMetrics.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/RocksDBStoreMetrics.java @@ -281,7 +281,7 @@ private Map>> computeSstFileStat() { private void exportSstFileStat(MetricsRecordBuilder rb, Map> numStatPerCF, String metricName) { Map numStat; - for (Map.Entry> entry : numStatPerCF.entrySet()) { + for (Map.Entry> entry: numStatPerCF.entrySet()) { numStat = entry.getValue(); numStat.forEach((cf, v) -> rb.addCounter(Interns.info( cf + "_" + metricName + entry.getKey(), "RocksDBProperty"), v));