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

rpuch pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new c6a270e59b IGNITE-22210 Close DBOptions in 
SharedRocksDbInstance#stop() (#3743)
c6a270e59b is described below

commit c6a270e59bcc17162776ab72d3fd6456ad300fde
Author: Roman Puchkovskiy <[email protected]>
AuthorDate: Mon May 13 17:22:36 2024 +0400

    IGNITE-22210 Close DBOptions in SharedRocksDbInstance#stop() (#3743)
    
    This fixes a leak of a RocksDB resource that holds IgniteImpl from being 
GCed
---
 .../internal/storage/rocksdb/instance/SharedRocksDbInstance.java    | 6 ++++++
 .../storage/rocksdb/instance/SharedRocksDbInstanceCreator.java      | 1 +
 2 files changed, 7 insertions(+)

diff --git 
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/instance/SharedRocksDbInstance.java
 
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/instance/SharedRocksDbInstance.java
index 25f726f277..7d9c9c1d50 100644
--- 
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/instance/SharedRocksDbInstance.java
+++ 
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/instance/SharedRocksDbInstance.java
@@ -53,6 +53,7 @@ import 
org.apache.ignite.internal.storage.rocksdb.RocksDbMetaStorage;
 import org.apache.ignite.internal.storage.rocksdb.RocksDbStorageEngine;
 import org.apache.ignite.internal.util.IgniteSpinBusyLock;
 import org.rocksdb.ColumnFamilyDescriptor;
+import org.rocksdb.DBOptions;
 import org.rocksdb.ReadOptions;
 import org.rocksdb.RocksDB;
 import org.rocksdb.RocksDBException;
@@ -104,6 +105,8 @@ public final class SharedRocksDbInstance {
     /** RocksDB flusher instance. */
     public final RocksDbFlusher flusher;
 
+    private final DBOptions dbOptions;
+
     /** Rocks DB instance. */
     public final RocksDB db;
 
@@ -133,6 +136,7 @@ public final class SharedRocksDbInstance {
             Path path,
             IgniteSpinBusyLock busyLock,
             RocksDbFlusher flusher,
+            DBOptions dbOptions,
             RocksDB db,
             RocksDbMetaStorage meta,
             ColumnFamily partitionCf,
@@ -145,6 +149,7 @@ public final class SharedRocksDbInstance {
         this.busyLock = busyLock;
 
         this.flusher = flusher;
+        this.dbOptions = dbOptions;
         this.db = db;
 
         this.meta = meta;
@@ -203,6 +208,7 @@ public final class SharedRocksDbInstance {
         resources.add(hashIndexCf.handle());
         resources.addAll(sortedIndexCfsByName.values());
 
+        resources.add(dbOptions);
         resources.add(db);
         resources.add(flusher::stop);
 
diff --git 
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/instance/SharedRocksDbInstanceCreator.java
 
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/instance/SharedRocksDbInstanceCreator.java
index 399d51a1a2..7f166a6f9c 100644
--- 
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/instance/SharedRocksDbInstanceCreator.java
+++ 
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/instance/SharedRocksDbInstanceCreator.java
@@ -143,6 +143,7 @@ public class SharedRocksDbInstanceCreator {
                     path,
                     busyLock,
                     flusher,
+                    dbOptions,
                     db,
                     requireNonNull(meta, "meta"),
                     requireNonNull(partitionCf, "partitionCf"),

Reply via email to