This is an automated email from the ASF dual-hosted git repository.

nanda pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new bd02526cc1 HDDS-12186. Avoid array allocation for table iterator. 
(#7797)
bd02526cc1 is described below

commit bd02526cc1a3759c340e5c38363d268cd931f3bc
Author: Sadanand Shenoy <[email protected]>
AuthorDate: Mon Feb 3 21:31:15 2025 +0530

    HDDS-12186. Avoid array allocation for table iterator. (#7797)
---
 .../java/org/apache/hadoop/hdds/utils/db/Table.java   | 19 +++++--------------
 .../org/apache/hadoop/hdds/utils/db/TypedTable.java   |  8 +++-----
 .../org/apache/hadoop/ozone/om/KeyManagerImpl.java    |  4 ++--
 3 files changed, 10 insertions(+), 21 deletions(-)

diff --git 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/Table.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/Table.java
index 0c435066b8..f519bca5b1 100644
--- 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/Table.java
+++ 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/Table.java
@@ -337,12 +337,8 @@ interface KeyValue<KEY, VALUE> {
 
     VALUE getValue() throws IOException;
 
-    default byte[] getRawKey() throws IOException {
-      return null;
-    }
-
-    default byte[] getRawValue() throws IOException {
-      return null;
+    default int getRawSize()  throws IOException {
+      return 0;
     }
   }
 
@@ -383,7 +379,7 @@ public int hashCode() {
     };
   }
 
-  static <K, V> KeyValue<K, V> newKeyValue(K key, V value, byte[] rawKey, 
byte[] rawValue) {
+  static <K, V> KeyValue<K, V> newKeyValue(K key, V value, int rawSize) {
     return new KeyValue<K, V>() {
       @Override
       public K getKey() {
@@ -396,13 +392,8 @@ public V getValue() {
       }
 
       @Override
-      public byte[] getRawKey() throws IOException {
-        return rawKey;
-      }
-
-      @Override
-      public byte[] getRawValue() throws IOException {
-        return rawValue;
+      public int getRawSize() throws IOException {
+        return rawSize;
       }
 
       @Override
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 9609b5bfc2..d7bd554a0c 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,11 +605,9 @@ public CodecBuffer get() {
       @Override
       KeyValue<KEY, VALUE> convert(KeyValue<CodecBuffer, CodecBuffer> raw)
           throws IOException {
-        CodecBuffer keyCodecBuffer = raw.getKey();
-        final KEY key = keyCodec.fromCodecBuffer(keyCodecBuffer);
-        CodecBuffer valueCodecBuffer = raw.getValue();
-        final VALUE value = valueCodec.fromCodecBuffer(valueCodecBuffer);
-        return Table.newKeyValue(key, value, keyCodecBuffer.getArray(), 
valueCodecBuffer.getArray());
+        final KEY key = keyCodec.fromCodecBuffer(raw.getKey());
+        final VALUE value = valueCodec.fromCodecBuffer(raw.getValue());
+        return Table.newKeyValue(key, value, raw.getRawSize());
       }
     };
   }
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java
index 4fe509d7e9..6bad74b6d4 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java
@@ -2102,7 +2102,7 @@ private DeleteKeysResult 
gatherSubDirsWithIterator(OmKeyInfo parentInfo,
     while (iterator.hasNext() && remainingBufLimit > 0) {
       Table.KeyValue<String, OmDirectoryInfo> entry = iterator.next();
       OmDirectoryInfo dirInfo = entry.getValue();
-      long objectSerializedSize = entry.getRawValue().length;
+      long objectSerializedSize = entry.getRawSize();
       if (!OMFileRequest.isImmediateChild(dirInfo.getParentObjectID(),
           parentInfo.getObjectID())) {
         processedSubDirs = true;
@@ -2149,7 +2149,7 @@ public DeleteKeysResult getPendingDeletionSubFiles(long 
volumeId,
       while (iterator.hasNext() && remainingBufLimit > 0) {
         Table.KeyValue<String, OmKeyInfo> entry = iterator.next();
         OmKeyInfo fileInfo = entry.getValue();
-        long objectSerializedSize = entry.getRawValue().length;
+        long objectSerializedSize = entry.getRawSize();
         if (!OMFileRequest.isImmediateChild(fileInfo.getParentObjectID(),
             parentInfo.getObjectID())) {
           processedSubFiles = true;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to