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

adoroszlai 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 a3fbbbf3f4 HDDS-8762. Support RocksDB delete with ByteBuffer. (#4900)
a3fbbbf3f4 is described below

commit a3fbbbf3f4f8f2637b2ca420f06afd0c7d9c6b6e
Author: Tsz-Wo Nicholas Sze <[email protected]>
AuthorDate: Fri Jun 16 22:39:09 2023 +0800

    HDDS-8762. Support RocksDB delete with ByteBuffer. (#4900)
---
 .../java/org/apache/hadoop/hdds/utils/db/RDBTable.java     |  5 +++++
 .../org/apache/hadoop/hdds/utils/db/RocksDatabase.java     | 14 ++++++++++++++
 .../java/org/apache/hadoop/hdds/utils/db/TypedTable.java   |  8 +++++++-
 3 files changed, 26 insertions(+), 1 deletion(-)

diff --git 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBTable.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBTable.java
index c597ad73e6..53ca13c4da 100644
--- 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBTable.java
+++ 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBTable.java
@@ -193,6 +193,11 @@ class RDBTable implements Table<byte[], byte[]> {
     db.delete(family, key);
   }
 
+  public void delete(ByteBuffer key) throws IOException {
+    db.delete(family, key);
+  }
+
+
   @Override
   public void deleteRange(byte[] beginKey, byte[] endKey) throws IOException {
     db.deleteRange(family, beginKey, endKey);
diff --git 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RocksDatabase.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RocksDatabase.java
index 2e59d7f16c..0d4850027d 100644
--- 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RocksDatabase.java
+++ 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RocksDatabase.java
@@ -888,6 +888,20 @@ public final class RocksDatabase implements Closeable {
     }
   }
 
+  public void delete(ColumnFamily family, ByteBuffer key) throws IOException {
+    assertClose();
+    try {
+      counter.incrementAndGet();
+      db.get().delete(family.getHandle(), writeOptions, key);
+    } catch (RocksDBException e) {
+      closeOnError(e, true);
+      final String message = "delete " + bytes2String(key) + " from " + family;
+      throw toIOException(this, message, e);
+    } finally {
+      counter.decrementAndGet();
+    }
+  }
+
   public void deleteRange(ColumnFamily family, byte[] beginKey, byte[] endKey)
       throws IOException {
     assertClose();
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 4c9a65d07c..ad5cb20e6e 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
@@ -403,7 +403,13 @@ public class TypedTable<KEY, VALUE> implements Table<KEY, 
VALUE> {
 
   @Override
   public void delete(KEY key) throws IOException {
-    rawTable.delete(encodeKey(key));
+    if (keyCodec.supportCodecBuffer()) {
+      try (CodecBuffer buffer = keyCodec.toDirectCodecBuffer(key)) {
+        rawTable.delete(buffer.asReadOnlyByteBuffer());
+      }
+    } else {
+      rawTable.delete(encodeKey(key));
+    }
   }
 
   @Override


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

Reply via email to