Merge branch 'ankgup87-master'

This commit is contained in:
Yueh-Hsuan Chiang 2014-07-23 15:49:14 -07:00
commit 4b61a3d67d
7 changed files with 84 additions and 7 deletions

View File

@ -45,7 +45,8 @@ public class RocksDBSample {
.setMaxBackgroundCompactions(10) .setMaxBackgroundCompactions(10)
.setFilter(filter) .setFilter(filter)
.setCacheNumShardBits(6) .setCacheNumShardBits(6)
.setCompressionType(CompressionType.SNAPPY_COMPRESSION); .setCompressionType(CompressionType.SNAPPY_COMPRESSION)
.setCompactionStyle(CompactionStyle.UNIVERSAL);
Statistics stats = options.statisticsPtr(); Statistics stats = options.statisticsPtr();
assert(options.createIfMissing() == true); assert(options.createIfMissing() == true);
@ -56,6 +57,7 @@ public class RocksDBSample {
assert(options.maxBackgroundCompactions() == 10); assert(options.maxBackgroundCompactions() == 10);
assert(options.cacheNumShardBits() == 6); assert(options.cacheNumShardBits() == 6);
assert(options.compressionType() == CompressionType.SNAPPY_COMPRESSION); assert(options.compressionType() == CompressionType.SNAPPY_COMPRESSION);
assert(options.compactionStyle() == CompactionStyle.UNIVERSAL);
assert(options.memTableFactoryName().equals("SkipListFactory")); assert(options.memTableFactoryName().equals("SkipListFactory"));
options.setMemTableConfig( options.setMemTableConfig(

View File

@ -0,0 +1,22 @@
// Copyright (c) 2014, Facebook, Inc. All rights reserved.
// This source code is licensed under the BSD-style license found in the
// LICENSE file in the root directory of this source tree. An additional grant
// of patent rights can be found in the PATENTS file in the same directory.
package org.rocksdb;
public enum CompactionStyle {
LEVEL((byte) 0),
UNIVERSAL((byte) 1),
FIFO((byte) 2);
private final byte value_;
private CompactionStyle(byte value) {
value_ = value;
}
public byte getValue() {
return value_;
}
}

View File

@ -1373,6 +1373,30 @@ public class Options extends RocksObject {
} }
private native void setCompressionType(long handle, byte compressionType); private native void setCompressionType(long handle, byte compressionType);
/**
* Compaction style for DB.
*
* @return Compaction style.
*/
public CompactionStyle compactionStyle() {
return CompactionStyle.values()[compactionStyle(nativeHandle_)];
}
private native byte compactionStyle(long handle);
/**
* Set compaction style for DB.
*
* Default: LEVEL.
*
* @param compactionStyle Compaction style.
* @return the reference to the current option.
*/
public Options setCompactionStyle(CompactionStyle compactionStyle) {
setCompactionStyle(nativeHandle_, compactionStyle.getValue());
return this;
}
private native void setCompactionStyle(long handle, byte compactionStyle);
/** /**
* If true, place whole keys in the filter (not just prefixes). * If true, place whole keys in the filter (not just prefixes).
* This must generally be true for gets to be efficient. * This must generally be true for gets to be efficient.

View File

@ -119,7 +119,6 @@ public class RocksDB extends RocksObject {
options.numShardBits_, path); options.numShardBits_, path);
db.storeOptionsInstance(options); db.storeOptionsInstance(options);
return db; return db;
} }

View File

@ -46,13 +46,19 @@ public class StatisticsCollector {
_executorService.submit(collectStatistics()); _executorService.submit(collectStatistics());
} }
public void shutDown() throws InterruptedException { /**
* Shuts down statistics collector.
*
* @param shutdownTimeout Time in milli-seconds to wait for shutdown before
* killing the collection process.
*/
public void shutDown(int shutdownTimeout) throws InterruptedException {
_isRunning = false; _isRunning = false;
_executorService.shutdown(); _executorService.shutdownNow();
// Wait for collectStatistics runnable to finish so that disposal of // Wait for collectStatistics runnable to finish so that disposal of
// statistics does not cause any exceptions to be thrown. // statistics does not cause any exceptions to be thrown.
_executorService.awaitTermination(Integer.MAX_VALUE, TimeUnit.SECONDS); _executorService.awaitTermination(shutdownTimeout, TimeUnit.MILLISECONDS);
} }
private Runnable collectStatistics() { private Runnable collectStatistics() {
@ -62,6 +68,9 @@ public class StatisticsCollector {
public void run() { public void run() {
while (_isRunning) { while (_isRunning) {
try { try {
if(Thread.currentThread().isInterrupted()) {
break;
}
for(StatsCollectorInput statsCollectorInput : for(StatsCollectorInput statsCollectorInput :
_statsCollectorInputList) { _statsCollectorInputList) {
Statistics statistics = statsCollectorInput.getStatistics(); Statistics statistics = statsCollectorInput.getStatistics();
@ -86,7 +95,7 @@ public class StatisticsCollector {
} }
catch (InterruptedException e) { catch (InterruptedException e) {
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
throw new RuntimeException("Thread got interrupted!", e); break;
} }
catch (Exception e) { catch (Exception e) {
throw new RuntimeException("Error while calculating statistics", e); throw new RuntimeException("Error while calculating statistics", e);

View File

@ -33,7 +33,7 @@ public class StatisticsCollectorTest {
assert(callback.tickerCallbackCount > 0); assert(callback.tickerCallbackCount > 0);
assert(callback.histCallbackCount > 0); assert(callback.histCallbackCount > 0);
statsCollector.shutDown(); statsCollector.shutDown(1000);
db.close(); db.close();
opt.dispose(); opt.dispose();

View File

@ -956,6 +956,27 @@ jbyte Java_org_rocksdb_Options_compressionType(
return reinterpret_cast<rocksdb::Options*>(jhandle)->compression; return reinterpret_cast<rocksdb::Options*>(jhandle)->compression;
} }
/*
* Class: org_rocksdb_Options
* Method: setCompactionStyle
* Signature: (JB)V
*/
void Java_org_rocksdb_Options_setCompactionStyle(
JNIEnv* env, jobject jobj, jlong jhandle, jbyte compaction_style) {
reinterpret_cast<rocksdb::Options*>(jhandle)->compaction_style =
static_cast<rocksdb::CompactionStyle>(compaction_style);
}
/*
* Class: org_rocksdb_Options
* Method: compactionStyle
* Signature: (J)B
*/
jbyte Java_org_rocksdb_Options_compactionStyle(
JNIEnv* env, jobject jobj, jlong jhandle) {
return reinterpret_cast<rocksdb::Options*>(jhandle)->compaction_style;
}
/* /*
* Class: org_rocksdb_Options * Class: org_rocksdb_Options
* Method: wholeKeyFiltering * Method: wholeKeyFiltering