swamirishi commented on code in PR #9508:
URL: https://github.com/apache/ozone/pull/9508#discussion_r2631851415
##########
hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedDirectSlice.java:
##########
@@ -17,35 +17,98 @@
package org.apache.hadoop.hdds.utils.db.managed;
-import static
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.track;
+import static org.apache.hadoop.hdds.utils.db.managed.ManagedRocksDB.NOT_FOUND;
+import com.google.common.annotations.VisibleForTesting;
import java.nio.ByteBuffer;
-import org.apache.ratis.util.UncheckedAutoCloseable;
+import org.apache.hadoop.hdds.utils.db.RocksDatabaseException;
+import org.apache.ratis.util.function.CheckedConsumer;
+import org.apache.ratis.util.function.CheckedFunction;
import org.rocksdb.DirectSlice;
+import org.rocksdb.RocksDBException;
/**
- * Managed Direct Slice.
+ * ManagedDirectSlice is a managed wrapper around the DirectSlice object. It
ensures
+ * proper handling of native resources associated with DirectSlice, utilizing
+ * the ManagedObject infrastructure to prevent resource leaks. It works in
tandem
+ * with a ByteBuffer, which acts as the data source for the managed slice.
+ *
+ * This class overrides certain operations to tightly control the lifecycle and
+ * behavior of the DirectSlice it manages. It specifically caters to use cases
+ * where the slice is used in RocksDB operations, providing methods for safely
+ * interacting with the slice for put-like operations.
*/
-public class ManagedDirectSlice extends DirectSlice {
- private final UncheckedAutoCloseable leakTracker = track(this);
+public class ManagedDirectSlice extends ManagedObject<DirectSlice> {
+
+ private final ByteBuffer data;
public ManagedDirectSlice(ByteBuffer data) {
- super(data);
+ super(new DirectSlice(data));
+ this.data = data;
}
@Override
- public synchronized long getNativeHandle() {
- return super.getNativeHandle();
+ public DirectSlice get() {
+ throw new UnsupportedOperationException("get() is not supported.");
}
- @Override
- protected void disposeInternal() {
Review Comment:
This is already there here
https://github.com/apache/ozone/blob/3ef7ed79eb2877c64d83309f8ef7cd47223a6640/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedObject.java#L29-L49
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]