From 35f9152a42dea0c0e09183f18ccb15bc29a8aea6 Mon Sep 17 00:00:00 2001 From: Sammi Chen Date: Thu, 25 Jun 2026 13:14:23 +0800 Subject: [PATCH 1/2] HDDS-15664. ozone debug ldb display DeletedBlocksTransactionSummary info --- .../hadoop/ozone/debug/ldb/DBScanner.java | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/hadoop-ozone/cli-debug/src/main/java/org/apache/hadoop/ozone/debug/ldb/DBScanner.java b/hadoop-ozone/cli-debug/src/main/java/org/apache/hadoop/ozone/debug/ldb/DBScanner.java index 6338c49d9886..2fa3b2f30f52 100644 --- a/hadoop-ozone/cli-debug/src/main/java/org/apache/hadoop/ozone/debug/ldb/DBScanner.java +++ b/hadoop-ozone/cli-debug/src/main/java/org/apache/hadoop/ozone/debug/ldb/DBScanner.java @@ -18,6 +18,8 @@ package org.apache.hadoop.ozone.debug.ldb; import static java.nio.charset.StandardCharsets.UTF_8; +import static org.apache.hadoop.hdds.scm.block.DeletedBlockLogStateManagerImpl.SERVICE_NAME; +import static org.apache.hadoop.hdds.scm.metadata.SCMDBDefinition.STATEFUL_SERVICE_CONFIG; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonInclude; @@ -28,6 +30,8 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.google.common.annotations.VisibleForTesting; import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.google.protobuf.ByteString; +import com.google.protobuf.InvalidProtocolBufferException; import java.io.BufferedWriter; import java.io.File; import java.io.IOException; @@ -54,6 +58,7 @@ import java.util.regex.Pattern; import org.apache.hadoop.hdds.cli.AbstractSubcommand; import org.apache.hadoop.hdds.conf.OzoneConfiguration; +import org.apache.hadoop.hdds.protocol.proto.HddsProtos; import org.apache.hadoop.hdds.scm.container.ContainerID; import org.apache.hadoop.hdds.scm.pipeline.PipelineID; import org.apache.hadoop.hdds.utils.IOUtils; @@ -730,9 +735,9 @@ public Void call() { // one, to ensure valid JSON format. sb.append(", "); } + Object key = dbColumnFamilyDefinition.getKeyCodec() + .fromPersistedFormat(byteArrayKeyValue.getKey()); if (withKey) { - Object key = dbColumnFamilyDefinition.getKeyCodec() - .fromPersistedFormat(byteArrayKeyValue.getKey()); if (schemaV3) { int index = DatanodeSchemaThreeDBDefinition.getContainerKeyPrefixLength(); @@ -758,9 +763,11 @@ public Void call() { Object o = dbColumnFamilyDefinition.getValueCodec() .fromPersistedFormat(byteArrayKeyValue.getValue()); + o = parseStatefulServiceConfig(key, o, dbColumnFamilyDefinition); + if (valueFields != null) { Map filteredValue = new HashMap<>(); - filteredValue.putAll(getFieldsFilteredObject(o, dbColumnFamilyDefinition.getValueType(), fieldsSplitMap)); + filteredValue.putAll(getFieldsFilteredObject(o, o.getClass(), fieldsSplitMap)); sb.append(writer.writeValueAsString(filteredValue)); } else { sb.append(writer.writeValueAsString(o)); @@ -829,6 +836,20 @@ List getFieldsFilteredObjectCollection(Collection valueObject, Map Date: Thu, 2 Jul 2026 15:55:54 +0800 Subject: [PATCH 2/2] address comment --- .../main/java/org/apache/hadoop/ozone/debug/ldb/DBScanner.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/hadoop-ozone/cli-debug/src/main/java/org/apache/hadoop/ozone/debug/ldb/DBScanner.java b/hadoop-ozone/cli-debug/src/main/java/org/apache/hadoop/ozone/debug/ldb/DBScanner.java index 2fa3b2f30f52..c5a34b19958b 100644 --- a/hadoop-ozone/cli-debug/src/main/java/org/apache/hadoop/ozone/debug/ldb/DBScanner.java +++ b/hadoop-ozone/cli-debug/src/main/java/org/apache/hadoop/ozone/debug/ldb/DBScanner.java @@ -31,7 +31,6 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.google.protobuf.ByteString; -import com.google.protobuf.InvalidProtocolBufferException; import java.io.BufferedWriter; import java.io.File; import java.io.IOException; @@ -841,8 +840,6 @@ private Object parseStatefulServiceConfig(Object key, Object value, DBColumnFami value instanceof ByteString) { try { return HddsProtos.DeletedBlocksTransactionSummary.parseFrom((ByteString) value); - } catch (InvalidProtocolBufferException e) { - LOG.error("Failed to parse {} for key {}", STATEFUL_SERVICE_CONFIG.getName(), SERVICE_NAME, e); } catch (IOException e) { LOG.error("Failed to parse {} for key {}", STATEFUL_SERVICE_CONFIG.getName(), SERVICE_NAME, e); }