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"),