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..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 @@ -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,7 @@ 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 java.io.BufferedWriter; import java.io.File; import java.io.IOException; @@ -54,6 +57,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 +734,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 +762,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 +835,18 @@ List getFieldsFilteredObjectCollection(Collection valueObject, Map