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]