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]