From a01b592597f5bd1eea0d12cb57b0933dae12c9b5 Mon Sep 17 00:00:00 2001 From: fyrz Date: Mon, 2 Mar 2015 21:58:11 +0100 Subject: [PATCH] [RocksJava] DefaultColumnFamily Memory Fix In the current implementation DefaultColumnFamily will not disown the native handle. As the database handles the lease on the native handle this should be the case. --- java/src/main/java/org/rocksdb/RocksDB.java | 5 ++++- java/src/test/java/org/rocksdb/ColumnFamilyTest.java | 9 +-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/java/src/main/java/org/rocksdb/RocksDB.java b/java/src/main/java/org/rocksdb/RocksDB.java index 4d5423730..2af55c420 100644 --- a/java/src/main/java/org/rocksdb/RocksDB.java +++ b/java/src/main/java/org/rocksdb/RocksDB.java @@ -1270,7 +1270,10 @@ public class RocksDB extends RocksObject { * @return The handle of the default column family */ public ColumnFamilyHandle getDefaultColumnFamily() { - return new ColumnFamilyHandle(this, getDefaultColumnFamily(nativeHandle_)); + ColumnFamilyHandle cfHandle = new ColumnFamilyHandle(this, + getDefaultColumnFamily(nativeHandle_)); + cfHandle.disOwnNativeHandle(); + return cfHandle; } /** diff --git a/java/src/test/java/org/rocksdb/ColumnFamilyTest.java b/java/src/test/java/org/rocksdb/ColumnFamilyTest.java index f6d5b9f9d..72e93d268 100644 --- a/java/src/test/java/org/rocksdb/ColumnFamilyTest.java +++ b/java/src/test/java/org/rocksdb/ColumnFamilyTest.java @@ -58,11 +58,7 @@ public class ColumnFamilyTest { Options options = null; ColumnFamilyHandle cfh = null; try { - options = new Options(); - options.setCreateIfMissing(true); - - DBOptions dbOptions = new DBOptions(); - dbOptions.setCreateIfMissing(true); + options = new Options().setCreateIfMissing(true); db = RocksDB.open(options, dbFolder.getRoot().getAbsolutePath()); cfh = db.getDefaultColumnFamily(); @@ -78,9 +74,6 @@ public class ColumnFamilyTest { assertThat(cfh).isNotNull(); assertThat(actualValue).isEqualTo(value); } finally { - if (cfh != null) { - cfh.dispose(); - } if (db != null) { db.close(); }