Merge pull request #524 from fyrz/RocksJava-Test-Fix

[RocksJava] Fix JTest issues with enabled assertions.

Closes https://github.com/facebook/rocksdb/issues/523
main
Adam Retter 10 years ago
commit 756532daf5
  1. 2
      java/benchmark/src/main/java/org/rocksdb/benchmark/DbBenchmark.java
  2. 3
      java/src/main/java/org/rocksdb/HistogramType.java
  3. 5
      java/src/main/java/org/rocksdb/RocksDB.java
  4. 3
      java/src/main/java/org/rocksdb/TickerType.java
  5. 3
      java/src/test/java/org/rocksdb/AbstractComparatorTest.java
  6. 199
      java/src/test/java/org/rocksdb/ColumnFamilyTest.java
  7. 12
      java/src/test/java/org/rocksdb/KeyMayExistTest.java
  8. 24
      java/src/test/java/org/rocksdb/MergeTest.java
  9. 69
      java/src/test/java/org/rocksdb/ReadOnlyTest.java
  10. 8
      java/src/test/java/org/rocksdb/RocksDBTest.java
  11. 32
      java/src/test/java/org/rocksdb/RocksIteratorTest.java

@ -418,9 +418,11 @@ public class DbBenchmark {
stats_.found_++; stats_.found_++;
stats_.finishedSingleOp(iter.key().length + iter.value().length); stats_.finishedSingleOp(iter.key().length + iter.value().length);
if (isFinished()) { if (isFinished()) {
iter.dispose();
return; return;
} }
} }
iter.dispose();
} }
} }

@ -26,8 +26,7 @@ public enum HistogramType {
SOFT_RATE_LIMIT_DELAY_COUNT(16), SOFT_RATE_LIMIT_DELAY_COUNT(16),
NUM_FILES_IN_SINGLE_COMPACTION(17), NUM_FILES_IN_SINGLE_COMPACTION(17),
DB_SEEK(18), DB_SEEK(18),
WRITE_STALL(19), WRITE_STALL(19);
HISTOGRAM_ENUM_MAX(20);
private final int value_; private final int value_;

@ -1270,7 +1270,10 @@ public class RocksDB extends RocksObject {
* @return The handle of the default column family * @return The handle of the default column family
*/ */
public ColumnFamilyHandle getDefaultColumnFamily() { public ColumnFamilyHandle getDefaultColumnFamily() {
return new ColumnFamilyHandle(this, getDefaultColumnFamily(nativeHandle_)); ColumnFamilyHandle cfHandle = new ColumnFamilyHandle(this,
getDefaultColumnFamily(nativeHandle_));
cfHandle.disOwnNativeHandle();
return cfHandle;
} }
/** /**

@ -123,8 +123,7 @@ public enum TickerType {
NUMBER_SUPERVERSION_ACQUIRES(55), NUMBER_SUPERVERSION_ACQUIRES(55),
NUMBER_SUPERVERSION_RELEASES(56), NUMBER_SUPERVERSION_RELEASES(56),
NUMBER_SUPERVERSION_CLEANUPS(57), NUMBER_SUPERVERSION_CLEANUPS(57),
NUMBER_BLOCK_NOT_COMPRESSED(58), NUMBER_BLOCK_NOT_COMPRESSED(58);
TICKER_ENUM_MAX(59);
private final int value_; private final int value_;

@ -78,6 +78,7 @@ public abstract class AbstractComparatorTest {
lastKey = thisKey; lastKey = thisKey;
count++; count++;
} }
it.dispose();
db.close(); db.close();
assertThat(count).isEqualTo(ITERATIONS); assertThat(count).isEqualTo(ITERATIONS);
@ -162,6 +163,8 @@ public abstract class AbstractComparatorTest {
lastKey = thisKey; lastKey = thisKey;
count++; count++;
} }
it.dispose();
for (ColumnFamilyHandle handle : cfHandles) { for (ColumnFamilyHandle handle : cfHandles) {
handle.dispose(); handle.dispose();
} }

@ -56,15 +56,12 @@ public class ColumnFamilyTest {
public void defaultColumnFamily() throws RocksDBException { public void defaultColumnFamily() throws RocksDBException {
RocksDB db = null; RocksDB db = null;
Options options = null; Options options = null;
ColumnFamilyHandle cfh;
try { try {
options = new Options(); options = new Options().setCreateIfMissing(true);
options.setCreateIfMissing(true);
DBOptions dbOptions = new DBOptions();
dbOptions.setCreateIfMissing(true);
db = RocksDB.open(options, dbFolder.getRoot().getAbsolutePath()); db = RocksDB.open(options, dbFolder.getRoot().getAbsolutePath());
ColumnFamilyHandle cfh = db.getDefaultColumnFamily(); cfh = db.getDefaultColumnFamily();
assertThat(cfh).isNotNull(); assertThat(cfh).isNotNull();
final byte[] key = "key".getBytes(); final byte[] key = "key".getBytes();
@ -90,17 +87,15 @@ public class ColumnFamilyTest {
public void createColumnFamily() throws RocksDBException { public void createColumnFamily() throws RocksDBException {
RocksDB db = null; RocksDB db = null;
Options options = null; Options options = null;
ColumnFamilyHandle columnFamilyHandle = null;
try { try {
options = new Options(); options = new Options();
options.setCreateIfMissing(true); options.setCreateIfMissing(true);
DBOptions dbOptions = new DBOptions();
dbOptions.setCreateIfMissing(true);
db = RocksDB.open(options, dbFolder.getRoot().getAbsolutePath()); db = RocksDB.open(options, dbFolder.getRoot().getAbsolutePath());
db.createColumnFamily(new ColumnFamilyDescriptor("new_cf".getBytes(), columnFamilyHandle = db.createColumnFamily(
new ColumnFamilyOptions())); new ColumnFamilyDescriptor("new_cf".getBytes(), new ColumnFamilyOptions()));
db.close();
List<byte[]> columnFamilyNames; List<byte[]> columnFamilyNames;
columnFamilyNames = RocksDB.listColumnFamilies(options, dbFolder.getRoot().getAbsolutePath()); columnFamilyNames = RocksDB.listColumnFamilies(options, dbFolder.getRoot().getAbsolutePath());
assertThat(columnFamilyNames).isNotNull(); assertThat(columnFamilyNames).isNotNull();
@ -109,6 +104,9 @@ public class ColumnFamilyTest {
assertThat(new String(columnFamilyNames.get(0))).isEqualTo("default"); assertThat(new String(columnFamilyNames.get(0))).isEqualTo("default");
assertThat(new String(columnFamilyNames.get(1))).isEqualTo("new_cf"); assertThat(new String(columnFamilyNames.get(1))).isEqualTo("new_cf");
} finally { } finally {
if (columnFamilyHandle != null) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -122,15 +120,15 @@ public class ColumnFamilyTest {
public void openWithColumnFamilies() throws RocksDBException { public void openWithColumnFamilies() throws RocksDBException {
RocksDB db = null; RocksDB db = null;
DBOptions options = null; DBOptions options = null;
List<ColumnFamilyDescriptor> cfNames =
new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>();
try { try {
options = new DBOptions(); options = new DBOptions();
options.setCreateIfMissing(true); options.setCreateIfMissing(true);
options.setCreateMissingColumnFamilies(true); options.setCreateMissingColumnFamilies(true);
// Test open database with column family names // Test open database with column family names
List<ColumnFamilyDescriptor> cfNames =
new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>();
cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY)); cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY));
cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes())); cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes()));
@ -156,6 +154,9 @@ public class ColumnFamilyTest {
assertThat(db.get(columnFamilyHandleList.get(0), new ReadOptions(), assertThat(db.get(columnFamilyHandleList.get(0), new ReadOptions(),
"dfkey2".getBytes())).isNull(); "dfkey2".getBytes())).isNull();
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : columnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -169,15 +170,15 @@ public class ColumnFamilyTest {
public void getWithOutValueAndCf() throws RocksDBException { public void getWithOutValueAndCf() throws RocksDBException {
RocksDB db = null; RocksDB db = null;
DBOptions options = null; DBOptions options = null;
List<ColumnFamilyDescriptor> cfDescriptors =
new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>();
try { try {
options = new DBOptions(); options = new DBOptions();
options.setCreateIfMissing(true); options.setCreateIfMissing(true);
options.setCreateMissingColumnFamilies(true); options.setCreateMissingColumnFamilies(true);
// Test open database with column family names // Test open database with column family names
List<ColumnFamilyDescriptor> cfDescriptors =
new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>();
cfDescriptors.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY)); cfDescriptors.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY));
db = RocksDB.open(options, dbFolder.getRoot().getAbsolutePath(), db = RocksDB.open(options, dbFolder.getRoot().getAbsolutePath(),
cfDescriptors, columnFamilyHandleList); cfDescriptors, columnFamilyHandleList);
@ -198,6 +199,9 @@ public class ColumnFamilyTest {
assertThat(getResult).isNotEqualTo(RocksDB.NOT_FOUND); assertThat(getResult).isNotEqualTo(RocksDB.NOT_FOUND);
assertThat(outValue).isEqualTo("12345".getBytes()); assertThat(outValue).isEqualTo("12345".getBytes());
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : columnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -212,14 +216,14 @@ public class ColumnFamilyTest {
RocksDB db = null; RocksDB db = null;
DBOptions opt = null; DBOptions opt = null;
ColumnFamilyHandle tmpColumnFamilyHandle = null; ColumnFamilyHandle tmpColumnFamilyHandle = null;
try {
opt = new DBOptions();
opt.setCreateIfMissing(true);
opt.setCreateMissingColumnFamilies(true);
List<ColumnFamilyDescriptor> cfNames = List<ColumnFamilyDescriptor> cfNames =
new ArrayList<>(); new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList = List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>(); new ArrayList<>();
try {
opt = new DBOptions();
opt.setCreateIfMissing(true);
opt.setCreateMissingColumnFamilies(true);
cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY)); cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY));
cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes())); cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes()));
@ -231,6 +235,9 @@ public class ColumnFamilyTest {
db.dropColumnFamily(tmpColumnFamilyHandle); db.dropColumnFamily(tmpColumnFamilyHandle);
tmpColumnFamilyHandle.dispose(); tmpColumnFamilyHandle.dispose();
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : columnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (tmpColumnFamilyHandle != null) { if (tmpColumnFamilyHandle != null) {
tmpColumnFamilyHandle.dispose(); tmpColumnFamilyHandle.dispose();
} }
@ -247,14 +254,15 @@ public class ColumnFamilyTest {
public void writeBatch() throws RocksDBException { public void writeBatch() throws RocksDBException {
RocksDB db = null; RocksDB db = null;
DBOptions opt = null; DBOptions opt = null;
try {
opt = new DBOptions();
opt.setCreateIfMissing(true);
opt.setCreateMissingColumnFamilies(true);
List<ColumnFamilyDescriptor> cfNames = List<ColumnFamilyDescriptor> cfNames =
new ArrayList<>(); new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList = List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>(); new ArrayList<>();
try {
opt = new DBOptions();
opt.setCreateIfMissing(true);
opt.setCreateMissingColumnFamilies(true);
cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY, cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY,
new ColumnFamilyOptions().setMergeOperator(new StringAppendOperator()))); new ColumnFamilyOptions().setMergeOperator(new StringAppendOperator())));
cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes())); cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes()));
@ -288,6 +296,9 @@ public class ColumnFamilyTest {
assertThat(new String(db.get(db.getDefaultColumnFamily(), assertThat(new String(db.get(db.getDefaultColumnFamily(),
"mergeKey".getBytes()))).isEqualTo("merge,merge"); "mergeKey".getBytes()))).isEqualTo("merge,merge");
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : columnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -302,14 +313,15 @@ public class ColumnFamilyTest {
RocksDB db = null; RocksDB db = null;
DBOptions options = null; DBOptions options = null;
RocksIterator rocksIterator = null; RocksIterator rocksIterator = null;
try {
options = new DBOptions();
options.setCreateIfMissing(true);
options.setCreateMissingColumnFamilies(true);
List<ColumnFamilyDescriptor> cfNames = List<ColumnFamilyDescriptor> cfNames =
new ArrayList<>(); new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList = List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>(); new ArrayList<>();
try {
options = new DBOptions();
options.setCreateIfMissing(true);
options.setCreateMissingColumnFamilies(true);
cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY)); cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY));
cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes())); cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes()));
@ -338,6 +350,9 @@ public class ColumnFamilyTest {
if (rocksIterator != null) { if (rocksIterator != null) {
rocksIterator.dispose(); rocksIterator.dispose();
} }
for (ColumnFamilyHandle columnFamilyHandle : columnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -351,14 +366,15 @@ public class ColumnFamilyTest {
public void multiGet() throws RocksDBException { public void multiGet() throws RocksDBException {
RocksDB db = null; RocksDB db = null;
DBOptions options = null; DBOptions options = null;
try {
options = new DBOptions();
options.setCreateIfMissing(true);
options.setCreateMissingColumnFamilies(true);
List<ColumnFamilyDescriptor> cfDescriptors = List<ColumnFamilyDescriptor> cfDescriptors =
new ArrayList<>(); new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList = List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>(); new ArrayList<>();
try {
options = new DBOptions();
options.setCreateIfMissing(true);
options.setCreateMissingColumnFamilies(true);
cfDescriptors.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY)); cfDescriptors.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY));
cfDescriptors.add(new ColumnFamilyDescriptor("new_cf".getBytes())); cfDescriptors.add(new ColumnFamilyDescriptor("new_cf".getBytes()));
@ -383,6 +399,9 @@ public class ColumnFamilyTest {
assertThat(new String(retValues.get(keys.get(1)))) assertThat(new String(retValues.get(keys.get(1))))
.isEqualTo("value"); .isEqualTo("value");
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : columnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -396,14 +415,15 @@ public class ColumnFamilyTest {
public void properties() throws RocksDBException { public void properties() throws RocksDBException {
RocksDB db = null; RocksDB db = null;
DBOptions options = null; DBOptions options = null;
try {
options = new DBOptions();
options.setCreateIfMissing(true);
options.setCreateMissingColumnFamilies(true);
List<ColumnFamilyDescriptor> cfNames = List<ColumnFamilyDescriptor> cfNames =
new ArrayList<>(); new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList = List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>(); new ArrayList<>();
try {
options = new DBOptions();
options.setCreateIfMissing(true);
options.setCreateMissingColumnFamilies(true);
cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY)); cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY));
cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes())); cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes()));
@ -423,6 +443,9 @@ public class ColumnFamilyTest {
assertThat(db.getProperty(columnFamilyHandleList.get(1), assertThat(db.getProperty(columnFamilyHandleList.get(1),
"rocksdb.sstables")).isNotNull(); "rocksdb.sstables")).isNotNull();
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : columnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -437,22 +460,22 @@ public class ColumnFamilyTest {
public void iterators() throws RocksDBException { public void iterators() throws RocksDBException {
RocksDB db = null; RocksDB db = null;
DBOptions options = null; DBOptions options = null;
List<ColumnFamilyDescriptor> cfNames =
new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>();
List<RocksIterator> iterators = null;
try { try {
options = new DBOptions(); options = new DBOptions();
options.setCreateIfMissing(true); options.setCreateIfMissing(true);
options.setCreateMissingColumnFamilies(true); options.setCreateMissingColumnFamilies(true);
List<ColumnFamilyDescriptor> cfNames =
new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>();
cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY)); cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY));
cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes())); cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes()));
db = RocksDB.open(options, dbFolder.getRoot().getAbsolutePath(), db = RocksDB.open(options, dbFolder.getRoot().getAbsolutePath(),
cfNames, columnFamilyHandleList); cfNames, columnFamilyHandleList);
List<RocksIterator> iterators = iterators = db.newIterators(columnFamilyHandleList);
db.newIterators(columnFamilyHandleList);
assertThat(iterators.size()).isEqualTo(2); assertThat(iterators.size()).isEqualTo(2);
RocksIterator iter = iterators.get(0); RocksIterator iter = iterators.get(0);
iter.seekToFirst(); iter.seekToFirst();
@ -476,6 +499,14 @@ public class ColumnFamilyTest {
iter.next(); iter.next();
} }
} finally { } finally {
if (iterators != null) {
for (RocksIterator rocksIterator : iterators) {
rocksIterator.dispose();
}
}
for (ColumnFamilyHandle columnFamilyHandle : columnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -489,13 +520,14 @@ public class ColumnFamilyTest {
public void failPutDisposedCF() throws RocksDBException { public void failPutDisposedCF() throws RocksDBException {
RocksDB db = null; RocksDB db = null;
DBOptions options = null; DBOptions options = null;
try {
options = new DBOptions();
options.setCreateIfMissing(true);
List<ColumnFamilyDescriptor> cfNames = List<ColumnFamilyDescriptor> cfNames =
new ArrayList<>(); new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList = List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>(); new ArrayList<>();
try {
options = new DBOptions();
options.setCreateIfMissing(true);
cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY)); cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY));
cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes())); cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes()));
@ -504,6 +536,9 @@ public class ColumnFamilyTest {
db.dropColumnFamily(columnFamilyHandleList.get(1)); db.dropColumnFamily(columnFamilyHandleList.get(1));
db.put(columnFamilyHandleList.get(1), "key".getBytes(), "value".getBytes()); db.put(columnFamilyHandleList.get(1), "key".getBytes(), "value".getBytes());
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : columnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -517,13 +552,14 @@ public class ColumnFamilyTest {
public void failRemoveDisposedCF() throws RocksDBException { public void failRemoveDisposedCF() throws RocksDBException {
RocksDB db = null; RocksDB db = null;
DBOptions options = null; DBOptions options = null;
try {
options = new DBOptions();
options.setCreateIfMissing(true);
List<ColumnFamilyDescriptor> cfNames = List<ColumnFamilyDescriptor> cfNames =
new ArrayList<>(); new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList = List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>(); new ArrayList<>();
try {
options = new DBOptions();
options.setCreateIfMissing(true);
cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY)); cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY));
cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes())); cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes()));
@ -532,6 +568,9 @@ public class ColumnFamilyTest {
db.dropColumnFamily(columnFamilyHandleList.get(1)); db.dropColumnFamily(columnFamilyHandleList.get(1));
db.remove(columnFamilyHandleList.get(1), "key".getBytes()); db.remove(columnFamilyHandleList.get(1), "key".getBytes());
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : columnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -545,13 +584,14 @@ public class ColumnFamilyTest {
public void failGetDisposedCF() throws RocksDBException { public void failGetDisposedCF() throws RocksDBException {
RocksDB db = null; RocksDB db = null;
DBOptions options = null; DBOptions options = null;
try {
options = new DBOptions();
options.setCreateIfMissing(true);
List<ColumnFamilyDescriptor> cfNames = List<ColumnFamilyDescriptor> cfNames =
new ArrayList<>(); new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList = List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>(); new ArrayList<>();
try {
options = new DBOptions();
options.setCreateIfMissing(true);
cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY)); cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY));
cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes())); cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes()));
@ -560,6 +600,9 @@ public class ColumnFamilyTest {
db.dropColumnFamily(columnFamilyHandleList.get(1)); db.dropColumnFamily(columnFamilyHandleList.get(1));
db.get(columnFamilyHandleList.get(1), "key".getBytes()); db.get(columnFamilyHandleList.get(1), "key".getBytes());
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : columnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -573,13 +616,14 @@ public class ColumnFamilyTest {
public void failMultiGetWithoutCorrectNumberOfCF() throws RocksDBException { public void failMultiGetWithoutCorrectNumberOfCF() throws RocksDBException {
RocksDB db = null; RocksDB db = null;
DBOptions options = null; DBOptions options = null;
try {
options = new DBOptions();
options.setCreateIfMissing(true);
List<ColumnFamilyDescriptor> cfNames = List<ColumnFamilyDescriptor> cfNames =
new ArrayList<>(); new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList = List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>(); new ArrayList<>();
try {
options = new DBOptions();
options.setCreateIfMissing(true);
cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY)); cfNames.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY));
cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes())); cfNames.add(new ColumnFamilyDescriptor("new_cf".getBytes()));
@ -592,6 +636,9 @@ public class ColumnFamilyTest {
db.multiGet(cfCustomList, keys); db.multiGet(cfCustomList, keys);
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : columnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -605,6 +652,7 @@ public class ColumnFamilyTest {
public void testByteCreateFolumnFamily() throws RocksDBException { public void testByteCreateFolumnFamily() throws RocksDBException {
RocksDB db = null; RocksDB db = null;
Options options = null; Options options = null;
ColumnFamilyHandle cf1 = null, cf2 = null, cf3 = null;
try { try {
options = new Options().setCreateIfMissing(true); options = new Options().setCreateIfMissing(true);
db = RocksDB.open(options, dbFolder.getRoot().getAbsolutePath()); db = RocksDB.open(options, dbFolder.getRoot().getAbsolutePath());
@ -612,12 +660,21 @@ public class ColumnFamilyTest {
byte[] b0 = new byte[] { (byte)0x00 }; byte[] b0 = new byte[] { (byte)0x00 };
byte[] b1 = new byte[] { (byte)0x01 }; byte[] b1 = new byte[] { (byte)0x01 };
byte[] b2 = new byte[] { (byte)0x02 }; byte[] b2 = new byte[] { (byte)0x02 };
db.createColumnFamily(new ColumnFamilyDescriptor(b0)); cf1 = db.createColumnFamily(new ColumnFamilyDescriptor(b0));
db.createColumnFamily(new ColumnFamilyDescriptor(b1)); cf2 = db.createColumnFamily(new ColumnFamilyDescriptor(b1));
List<byte[]> families = RocksDB.listColumnFamilies(options, dbFolder.getRoot().getAbsolutePath()); List<byte[]> families = RocksDB.listColumnFamilies(options, dbFolder.getRoot().getAbsolutePath());
assertThat(families).contains("default".getBytes(), b0, b1); assertThat(families).contains("default".getBytes(), b0, b1);
db.createColumnFamily(new ColumnFamilyDescriptor(b2)); cf3 = db.createColumnFamily(new ColumnFamilyDescriptor(b2));
} finally { } finally {
if (cf1 != null) {
cf1.dispose();
}
if (cf2 != null) {
cf2.dispose();
}
if (cf3 != null) {
cf3.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -631,17 +688,24 @@ public class ColumnFamilyTest {
public void testCFNamesWithZeroBytes() throws RocksDBException { public void testCFNamesWithZeroBytes() throws RocksDBException {
RocksDB db = null; RocksDB db = null;
Options options = null; Options options = null;
ColumnFamilyHandle cf1 = null, cf2 = null;
try { try {
options = new Options().setCreateIfMissing(true); options = new Options().setCreateIfMissing(true);
db = RocksDB.open(options, dbFolder.getRoot().getAbsolutePath()); db = RocksDB.open(options, dbFolder.getRoot().getAbsolutePath());
byte[] b0 = new byte[] { 0, 0 }; byte[] b0 = new byte[] { 0, 0 };
byte[] b1 = new byte[] { 0, 1 }; byte[] b1 = new byte[] { 0, 1 };
db.createColumnFamily(new ColumnFamilyDescriptor(b0)); cf1 = db.createColumnFamily(new ColumnFamilyDescriptor(b0));
db.createColumnFamily(new ColumnFamilyDescriptor(b1)); cf2 = db.createColumnFamily(new ColumnFamilyDescriptor(b1));
List<byte[]> families = RocksDB.listColumnFamilies(options, dbFolder.getRoot().getAbsolutePath()); List<byte[]> families = RocksDB.listColumnFamilies(options, dbFolder.getRoot().getAbsolutePath());
assertThat(families).contains("default".getBytes(), b0, b1); assertThat(families).contains("default".getBytes(), b0, b1);
} finally { } finally {
if (cf1 != null) {
cf1.dispose();
}
if (cf2 != null) {
cf2.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -655,15 +719,20 @@ public class ColumnFamilyTest {
public void testCFNameSimplifiedChinese() throws RocksDBException { public void testCFNameSimplifiedChinese() throws RocksDBException {
RocksDB db = null; RocksDB db = null;
Options options = null; Options options = null;
ColumnFamilyHandle columnFamilyHandle = null;
try { try {
options = new Options().setCreateIfMissing(true); options = new Options().setCreateIfMissing(true);
db = RocksDB.open(options, dbFolder.getRoot().getAbsolutePath()); db = RocksDB.open(options, dbFolder.getRoot().getAbsolutePath());
final String simplifiedChinese = "简体字"; final String simplifiedChinese = "\u7b80\u4f53\u5b57";
db.createColumnFamily(new ColumnFamilyDescriptor(simplifiedChinese.getBytes())); columnFamilyHandle = db.createColumnFamily(
new ColumnFamilyDescriptor(simplifiedChinese.getBytes()));
List<byte[]> families = RocksDB.listColumnFamilies(options, dbFolder.getRoot().getAbsolutePath()); List<byte[]> families = RocksDB.listColumnFamilies(options, dbFolder.getRoot().getAbsolutePath());
assertThat(families).contains("default".getBytes(), simplifiedChinese.getBytes()); assertThat(families).contains("default".getBytes(), simplifiedChinese.getBytes());
} finally { } finally {
if (columnFamilyHandle != null) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }

@ -27,15 +27,16 @@ public class KeyMayExistTest {
public void keyMayExist() throws RocksDBException { public void keyMayExist() throws RocksDBException {
RocksDB db = null; RocksDB db = null;
DBOptions options = null; DBOptions options = null;
List<ColumnFamilyDescriptor> cfDescriptors =
new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>();
try { try {
options = new DBOptions(); options = new DBOptions();
options.setCreateIfMissing(true) options.setCreateIfMissing(true)
.setCreateMissingColumnFamilies(true); .setCreateMissingColumnFamilies(true);
// open database using cf names // open database using cf names
List<ColumnFamilyDescriptor> cfDescriptors =
new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>();
cfDescriptors.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY)); cfDescriptors.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY));
cfDescriptors.add(new ColumnFamilyDescriptor("new_cf".getBytes())); cfDescriptors.add(new ColumnFamilyDescriptor("new_cf".getBytes()));
db = RocksDB.open(options, db = RocksDB.open(options,
@ -80,6 +81,9 @@ public class KeyMayExistTest {
assertThat(db.keyMayExist(columnFamilyHandleList.get(1), assertThat(db.keyMayExist(columnFamilyHandleList.get(1),
"key".getBytes(), retValue)).isFalse(); "key".getBytes(), retValue)).isFalse();
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : columnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }

@ -143,7 +143,11 @@ public class MergeTest {
throws InterruptedException, RocksDBException { throws InterruptedException, RocksDBException {
RocksDB db = null; RocksDB db = null;
DBOptions opt = null; DBOptions opt = null;
ColumnFamilyHandle columnFamilyHandle = null; ColumnFamilyHandle cfHandle = null;
List<ColumnFamilyDescriptor> cfDescriptors =
new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>();
try { try {
String db_path_string = String db_path_string =
dbFolder.getRoot().getAbsolutePath(); dbFolder.getRoot().getAbsolutePath();
@ -152,10 +156,6 @@ public class MergeTest {
opt.setCreateMissingColumnFamilies(true); opt.setCreateMissingColumnFamilies(true);
StringAppendOperator stringAppendOperator = new StringAppendOperator(); StringAppendOperator stringAppendOperator = new StringAppendOperator();
List<ColumnFamilyDescriptor> cfDescriptors =
new ArrayList<>();
List<ColumnFamilyHandle> columnFamilyHandleList =
new ArrayList<>();
cfDescriptors.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY, cfDescriptors.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY,
new ColumnFamilyOptions().setMergeOperator( new ColumnFamilyOptions().setMergeOperator(
stringAppendOperator))); stringAppendOperator)));
@ -175,23 +175,25 @@ public class MergeTest {
String strValue = new String(value); String strValue = new String(value);
// Test also with createColumnFamily // Test also with createColumnFamily
columnFamilyHandle = db.createColumnFamily( cfHandle = db.createColumnFamily(
new ColumnFamilyDescriptor("new_cf2".getBytes(), new ColumnFamilyDescriptor("new_cf2".getBytes(),
new ColumnFamilyOptions().setMergeOperator(stringAppendOperator))); new ColumnFamilyOptions().setMergeOperator(stringAppendOperator)));
// writing xx under cfkey2 // writing xx under cfkey2
db.put(columnFamilyHandle, "cfkey2".getBytes(), "xx".getBytes()); db.put(cfHandle, "cfkey2".getBytes(), "xx".getBytes());
// merge yy under cfkey2 // merge yy under cfkey2
db.merge(columnFamilyHandle, new WriteOptions(), "cfkey2".getBytes(), "yy".getBytes()); db.merge(cfHandle, new WriteOptions(), "cfkey2".getBytes(), "yy".getBytes());
value = db.get(columnFamilyHandle, "cfkey2".getBytes()); value = db.get(cfHandle, "cfkey2".getBytes());
String strValueTmpCf = new String(value); String strValueTmpCf = new String(value);
columnFamilyHandle.dispose();
assertThat(strValue).isEqualTo("aa,bb"); assertThat(strValue).isEqualTo("aa,bb");
assertThat(strValueTmpCf).isEqualTo("xx,yy"); assertThat(strValueTmpCf).isEqualTo("xx,yy");
} finally { } finally {
if (columnFamilyHandle != null) { for (ColumnFamilyHandle columnFamilyHandle : columnFamilyHandleList) {
columnFamilyHandle.dispose(); columnFamilyHandle.dispose();
} }
if (cfHandle != null) {
cfHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }

@ -80,12 +80,21 @@ public class ReadOnlyTest {
assertThat(new String(db3.get(readOnlyColumnFamilyHandleList2.get(1), assertThat(new String(db3.get(readOnlyColumnFamilyHandleList2.get(1),
"key2".getBytes()))).isEqualTo("value2"); "key2".getBytes()))).isEqualTo("value2");
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : columnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
for (ColumnFamilyHandle columnFamilyHandle : readOnlyColumnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db2 != null) { if (db2 != null) {
db2.close(); db2.close();
} }
for (ColumnFamilyHandle columnFamilyHandle : readOnlyColumnFamilyHandleList2) {
columnFamilyHandle.dispose();
}
if (db3 != null) { if (db3 != null) {
db3.close(); db3.close();
} }
@ -100,13 +109,15 @@ public class ReadOnlyTest {
RocksDB db = null; RocksDB db = null;
RocksDB rDb = null; RocksDB rDb = null;
Options options = null; Options options = null;
try {
List<ColumnFamilyDescriptor> cfDescriptors = new ArrayList<>(); List<ColumnFamilyDescriptor> cfDescriptors = new ArrayList<>();
List<ColumnFamilyHandle> readOnlyColumnFamilyHandleList =
new ArrayList<>();
try {
cfDescriptors.add( cfDescriptors.add(
new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY, new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY,
new ColumnFamilyOptions())); new ColumnFamilyOptions()));
List<ColumnFamilyHandle> readOnlyColumnFamilyHandleList =
new ArrayList<>();
options = new Options(); options = new Options();
options.setCreateIfMissing(true); options.setCreateIfMissing(true);
@ -120,6 +131,9 @@ public class ReadOnlyTest {
// test that put fails in readonly mode // test that put fails in readonly mode
rDb.put("key".getBytes(), "value".getBytes()); rDb.put("key".getBytes(), "value".getBytes());
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : readOnlyColumnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -137,13 +151,14 @@ public class ReadOnlyTest {
RocksDB db = null; RocksDB db = null;
RocksDB rDb = null; RocksDB rDb = null;
Options options = null; Options options = null;
try {
List<ColumnFamilyDescriptor> cfDescriptors = new ArrayList<>(); List<ColumnFamilyDescriptor> cfDescriptors = new ArrayList<>();
List<ColumnFamilyHandle> readOnlyColumnFamilyHandleList =
new ArrayList<>();
try {
cfDescriptors.add( cfDescriptors.add(
new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY, new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY,
new ColumnFamilyOptions())); new ColumnFamilyOptions()));
List<ColumnFamilyHandle> readOnlyColumnFamilyHandleList =
new ArrayList<>();
options = new Options(); options = new Options();
options.setCreateIfMissing(true); options.setCreateIfMissing(true);
@ -157,6 +172,9 @@ public class ReadOnlyTest {
rDb.put(readOnlyColumnFamilyHandleList.get(0), rDb.put(readOnlyColumnFamilyHandleList.get(0),
"key".getBytes(), "value".getBytes()); "key".getBytes(), "value".getBytes());
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : readOnlyColumnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -174,13 +192,13 @@ public class ReadOnlyTest {
RocksDB db = null; RocksDB db = null;
RocksDB rDb = null; RocksDB rDb = null;
Options options = null; Options options = null;
try {
List<ColumnFamilyDescriptor> cfDescriptors = new ArrayList<>(); List<ColumnFamilyDescriptor> cfDescriptors = new ArrayList<>();
List<ColumnFamilyHandle> readOnlyColumnFamilyHandleList =
new ArrayList<>();
try {
cfDescriptors.add( cfDescriptors.add(
new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY, new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY,
new ColumnFamilyOptions())); new ColumnFamilyOptions()));
List<ColumnFamilyHandle> readOnlyColumnFamilyHandleList =
new ArrayList<>();
options = new Options(); options = new Options();
options.setCreateIfMissing(true); options.setCreateIfMissing(true);
@ -194,6 +212,9 @@ public class ReadOnlyTest {
rDb.remove("key".getBytes()); rDb.remove("key".getBytes());
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : readOnlyColumnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -211,13 +232,13 @@ public class ReadOnlyTest {
RocksDB db = null; RocksDB db = null;
RocksDB rDb = null; RocksDB rDb = null;
Options options = null; Options options = null;
try {
List<ColumnFamilyDescriptor> cfDescriptors = new ArrayList<>(); List<ColumnFamilyDescriptor> cfDescriptors = new ArrayList<>();
List<ColumnFamilyHandle> readOnlyColumnFamilyHandleList =
new ArrayList<>();
try {
cfDescriptors.add( cfDescriptors.add(
new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY, new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY,
new ColumnFamilyOptions())); new ColumnFamilyOptions()));
List<ColumnFamilyHandle> readOnlyColumnFamilyHandleList =
new ArrayList<>();
options = new Options(); options = new Options();
options.setCreateIfMissing(true); options.setCreateIfMissing(true);
@ -233,6 +254,9 @@ public class ReadOnlyTest {
rDb.remove(readOnlyColumnFamilyHandleList.get(0), rDb.remove(readOnlyColumnFamilyHandleList.get(0),
"key".getBytes()); "key".getBytes());
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : readOnlyColumnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -250,13 +274,14 @@ public class ReadOnlyTest {
RocksDB db = null; RocksDB db = null;
RocksDB rDb = null; RocksDB rDb = null;
Options options = null; Options options = null;
try {
List<ColumnFamilyDescriptor> cfDescriptors = new ArrayList<>(); List<ColumnFamilyDescriptor> cfDescriptors = new ArrayList<>();
List<ColumnFamilyHandle> readOnlyColumnFamilyHandleList =
new ArrayList<>();
try {
cfDescriptors.add( cfDescriptors.add(
new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY, new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY,
new ColumnFamilyOptions())); new ColumnFamilyOptions()));
List<ColumnFamilyHandle> readOnlyColumnFamilyHandleList =
new ArrayList<>();
options = new Options(); options = new Options();
options.setCreateIfMissing(true); options.setCreateIfMissing(true);
@ -273,6 +298,9 @@ public class ReadOnlyTest {
wb.put("key".getBytes(), "value".getBytes()); wb.put("key".getBytes(), "value".getBytes());
rDb.write(new WriteOptions(), wb); rDb.write(new WriteOptions(), wb);
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : readOnlyColumnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }
@ -291,13 +319,15 @@ public class ReadOnlyTest {
RocksDB rDb = null; RocksDB rDb = null;
Options options = null; Options options = null;
WriteBatch wb = null; WriteBatch wb = null;
try {
List<ColumnFamilyDescriptor> cfDescriptors = new ArrayList<>(); List<ColumnFamilyDescriptor> cfDescriptors = new ArrayList<>();
List<ColumnFamilyHandle> readOnlyColumnFamilyHandleList =
new ArrayList<>();
try {
cfDescriptors.add( cfDescriptors.add(
new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY, new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY,
new ColumnFamilyOptions())); new ColumnFamilyOptions()));
List<ColumnFamilyHandle> readOnlyColumnFamilyHandleList =
new ArrayList<>();
options = new Options(); options = new Options();
options.setCreateIfMissing(true); options.setCreateIfMissing(true);
@ -315,6 +345,9 @@ public class ReadOnlyTest {
"key".getBytes(), "value".getBytes()); "key".getBytes(), "value".getBytes());
rDb.write(new WriteOptions(), wb); rDb.write(new WriteOptions(), wb);
} finally { } finally {
for (ColumnFamilyHandle columnFamilyHandle : readOnlyColumnFamilyHandleList) {
columnFamilyHandle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }

@ -472,8 +472,9 @@ public class RocksDBTest {
rand.nextBytes(b); rand.nextBytes(b);
db.put((String.valueOf(i)).getBytes(), b); db.put((String.valueOf(i)).getBytes(), b);
} }
db.flush(new FlushOptions().setWaitForFlush(true));
db.compactRange("0".getBytes(), "201".getBytes(), db.compactRange("0".getBytes(), "201".getBytes(),
true, 0, 0); true, -1, 0);
} finally { } finally {
if (db != null) { if (db != null) {
db.close(); db.close();
@ -580,7 +581,7 @@ public class RocksDBTest {
String.valueOf(i).getBytes(), b); String.valueOf(i).getBytes(), b);
} }
db.compactRange(columnFamilyHandles.get(1), "0".getBytes(), db.compactRange(columnFamilyHandles.get(1), "0".getBytes(),
"201".getBytes(), true, 0, 0); "201".getBytes(), true, -1, 0);
} finally { } finally {
for (ColumnFamilyHandle handle : columnFamilyHandles) { for (ColumnFamilyHandle handle : columnFamilyHandles) {
handle.dispose(); handle.dispose();
@ -729,6 +730,9 @@ public class RocksDBTest {
} }
} }
} finally { } finally {
for (ColumnFamilyHandle handle : columnFamilyHandles) {
handle.dispose();
}
if (db != null) { if (db != null) {
db.close(); db.close();
} }

@ -58,41 +58,9 @@ public class RocksIteratorTest {
assertThat(iterator.value()).isEqualTo("value2".getBytes()); assertThat(iterator.value()).isEqualTo("value2".getBytes());
iterator.status(); iterator.status();
} finally { } finally {
if (db != null) {
db.close();
}
if (options != null) {
options.dispose();
}
if (iterator != null) { if (iterator != null) {
iterator.dispose(); iterator.dispose();
} }
}
}
@Test
public void rocksIteratorGc()
throws RocksDBException {
RocksDB db = null;
Options options = null;
try {
options = new Options();
options.setCreateIfMissing(true)
.setCreateMissingColumnFamilies(true);
db = RocksDB.open(options,
dbFolder.getRoot().getAbsolutePath());
db.put("key".getBytes(), "value".getBytes());
db.newIterator();
db.newIterator();
RocksIterator iter3 = db.newIterator();
db.close();
db = null;
System.gc();
System.runFinalization();
iter3.dispose();
System.gc();
System.runFinalization();
} finally {
if (db != null) { if (db != null) {
db.close(); db.close();
} }

Loading…
Cancel
Save