From 1096f9610631395242156be090be7570f02c6858 Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Mon, 3 Feb 2025 17:42:21 +0100 Subject: [PATCH 1/2] HDDS-12186. (addendum) Avoid array allocation for table iterator --- .../main/java/org/apache/hadoop/hdds/utils/db/TypedTable.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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); } }; } From 8e6744ebe373687e141110c8e6272c41705d7f9d Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Mon, 3 Feb 2025 18:12:03 +0100 Subject: [PATCH 2/2] add assertion in unit test --- .../org/apache/hadoop/hdds/utils/db/TestRDBTableStore.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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);