diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/TypedTable.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/TypedTable.java index d7bd554a0cd0..f144e2c03c58 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/TypedTable.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/TypedTable.java @@ -605,9 +605,10 @@ public CodecBuffer get() { @Override KeyValue convert(KeyValue raw) throws IOException { + final int rawSize = raw.getValue().readableBytes(); final KEY key = keyCodec.fromCodecBuffer(raw.getKey()); final VALUE value = valueCodec.fromCodecBuffer(raw.getValue()); - return Table.newKeyValue(key, value, raw.getRawSize()); + return Table.newKeyValue(key, value, rawSize); } }; } diff --git a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/utils/db/TestRDBTableStore.java b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/utils/db/TestRDBTableStore.java index 8095c1cbb1f4..2ef496605080 100644 --- a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/utils/db/TestRDBTableStore.java +++ b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/utils/db/TestRDBTableStore.java @@ -600,8 +600,11 @@ static void assertIterator(int expectedCount, String prefix, try (Table.KeyValueIterator i = table.iterator(prefix)) { int keyCount = 0; for (; i.hasNext(); keyCount++) { + Table.KeyValue entry = i.next(); assertEquals(prefix, - i.next().getKey().substring(0, PREFIX_LENGTH)); + entry.getKey().substring(0, PREFIX_LENGTH)); + assertEquals(entry.getValue().getBytes(StandardCharsets.UTF_8).length, + entry.getRawSize()); } assertEquals(expectedCount, keyCount);