From 70aa243fa1eeffd5141e1d8787ab820dd9d3aa15 Mon Sep 17 00:00:00 2001 From: Ankit Gupta Date: Thu, 3 Jul 2014 14:13:05 -0700 Subject: [PATCH 1/8] Package .so file with .jar --- java/Makefile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/java/Makefile b/java/Makefile index 7a9c64732..287fe1021 100644 --- a/java/Makefile +++ b/java/Makefile @@ -3,6 +3,11 @@ NATIVE_JAVA_CLASSES = org.rocksdb.RocksDB org.rocksdb.Options org.rocksdb.WriteB NATIVE_INCLUDE = ./include ROCKSDB_JAR = rocksdbjni.jar +ROCKSDBJNILIB = ./librocksdbjni.so +ifeq ($(PLATFORM), OS_MACOSX) + ROCKSDBJNILIB = ./librocksdbjni.jnilib +endif + clean: -find . -name "*.class" -exec rm {} \; -find . -name "hs*.log" -exec rm {} \; @@ -11,7 +16,7 @@ clean: java: javac org/rocksdb/util/*.java org/rocksdb/*.java @cp ../HISTORY.md ./HISTORY-CPP.md - jar -cf $(ROCKSDB_JAR) org/rocksdb/*.class org/rocksdb/util/*.class HISTORY*.md + jar -cf $(ROCKSDB_JAR) org/rocksdb/*.class org/rocksdb/util/*.class HISTORY*.md $(ROCKSDBJNILIB) @rm -f ./HISTORY-CPP.md javah -d $(NATIVE_INCLUDE) -jni $(NATIVE_JAVA_CLASSES) From 54d7a2c0c512e6d47e2dc3de6d327d43a810bf80 Mon Sep 17 00:00:00 2001 From: Ankit Gupta Date: Mon, 7 Jul 2014 09:58:54 -0700 Subject: [PATCH 2/8] Add compression type to options --- java/RocksDBSample.java | 4 +++- java/org/rocksdb/Options.java | 11 +++++++++++ java/rocksjni/options.cc | 21 +++++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/java/RocksDBSample.java b/java/RocksDBSample.java index 1493977a9..5c4b70001 100644 --- a/java/RocksDBSample.java +++ b/java/RocksDBSample.java @@ -43,7 +43,8 @@ public class RocksDBSample { .setDisableSeekCompaction(true) .setBlockSize(64 * SizeUnit.KB) .setMaxBackgroundCompactions(10) - .setFilter(filter); + .setFilter(filter) + .setCompressionType(CompressionType.SNAPPY_COMPRESSION); Statistics stats = options.statisticsPtr(); assert(options.createIfMissing() == true); @@ -52,6 +53,7 @@ public class RocksDBSample { assert(options.disableSeekCompaction() == true); assert(options.blockSize() == 64 * SizeUnit.KB); assert(options.maxBackgroundCompactions() == 10); + assert(options.compressionType() == CompressionType.SNAPPY_COMPRESSION); assert(options.memTableFactoryName().equals("SkipListFactory")); options.setMemTableConfig( diff --git a/java/org/rocksdb/Options.java b/java/org/rocksdb/Options.java index 0bf7a9aa9..ea240966c 100644 --- a/java/org/rocksdb/Options.java +++ b/java/org/rocksdb/Options.java @@ -1307,6 +1307,17 @@ public class Options extends RocksObject { } private native void setBlockRestartInterval( long handle, int blockRestartInterval); + + public CompressionType compressionType() { + return CompressionType.values()[compressionType(nativeHandle_)]; + } + private native int compressionType(long handle); + + public Options setCompressionType(CompressionType compressionType) { + setCompressionType(nativeHandle_, compressionType.getValue()); + return this; + } + private native void setCompressionType(long handle, int compressionType); /** * If true, place whole keys in the filter (not just prefixes). diff --git a/java/rocksjni/options.cc b/java/rocksjni/options.cc index 003d353e6..16d13f8c9 100644 --- a/java/rocksjni/options.cc +++ b/java/rocksjni/options.cc @@ -935,6 +935,27 @@ void Java_org_rocksdb_Options_setBlockRestartInterval( static_cast(jblock_restart_interval); } +/* + * Class: org_rocksdb_Options + * Method: setCompressionType + * Signature: (JI)V + */ +void Java_org_rocksdb_Options_setCompressionType( + JNIEnv* env, jobject jobj, jlong jhandle, jint compression) { + reinterpret_cast(jhandle)->compression = + static_cast(compression); +} + +/* + * Class: org_rocksdb_Options + * Method: compressionType + * Signature: (J)I + */ +jint Java_org_rocksdb_Options_compressionType( + JNIEnv* env, jobject jobj, jlong jhandle) { + return reinterpret_cast(jhandle)->compression; +} + /* * Class: org_rocksdb_Options * Method: wholeKeyFiltering From da12f9ec4e98379715d8d595e4cbcc431c1020f0 Mon Sep 17 00:00:00 2001 From: Ankit Gupta Date: Mon, 7 Jul 2014 10:01:28 -0700 Subject: [PATCH 3/8] Remove .so package with JNI --- java/Makefile | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/java/Makefile b/java/Makefile index 287fe1021..7a9c64732 100644 --- a/java/Makefile +++ b/java/Makefile @@ -3,11 +3,6 @@ NATIVE_JAVA_CLASSES = org.rocksdb.RocksDB org.rocksdb.Options org.rocksdb.WriteB NATIVE_INCLUDE = ./include ROCKSDB_JAR = rocksdbjni.jar -ROCKSDBJNILIB = ./librocksdbjni.so -ifeq ($(PLATFORM), OS_MACOSX) - ROCKSDBJNILIB = ./librocksdbjni.jnilib -endif - clean: -find . -name "*.class" -exec rm {} \; -find . -name "hs*.log" -exec rm {} \; @@ -16,7 +11,7 @@ clean: java: javac org/rocksdb/util/*.java org/rocksdb/*.java @cp ../HISTORY.md ./HISTORY-CPP.md - jar -cf $(ROCKSDB_JAR) org/rocksdb/*.class org/rocksdb/util/*.class HISTORY*.md $(ROCKSDBJNILIB) + jar -cf $(ROCKSDB_JAR) org/rocksdb/*.class org/rocksdb/util/*.class HISTORY*.md @rm -f ./HISTORY-CPP.md javah -d $(NATIVE_INCLUDE) -jni $(NATIVE_JAVA_CLASSES) From 47f0cf6d38d9ff4443c4436991538075ee2eafa3 Mon Sep 17 00:00:00 2001 From: Ankit Gupta Date: Mon, 7 Jul 2014 10:06:28 -0700 Subject: [PATCH 4/8] Add docs --- java/org/rocksdb/CompressionType.java | 25 +++++++++++++++++++ java/org/rocksdb/Options.java | 35 +++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 java/org/rocksdb/CompressionType.java diff --git a/java/org/rocksdb/CompressionType.java b/java/org/rocksdb/CompressionType.java new file mode 100644 index 000000000..313a7813b --- /dev/null +++ b/java/org/rocksdb/CompressionType.java @@ -0,0 +1,25 @@ +// 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 CompressionType { + NO_COMPRESSION(0), + SNAPPY_COMPRESSION(1), + ZLIB_COMPRESSION(2), + BZLIB2_COMPRESSION(3), + LZ4_COMPRESSION(4), + LZ4HC_COMPRESSION(5); + + private final int value_; + + private CompressionType(int value) { + value_ = value; + } + + public int getValue() { + return value_; + } +} \ No newline at end of file diff --git a/java/org/rocksdb/Options.java b/java/org/rocksdb/Options.java index ea240966c..b441d49e4 100644 --- a/java/org/rocksdb/Options.java +++ b/java/org/rocksdb/Options.java @@ -1308,11 +1308,46 @@ public class Options extends RocksObject { private native void setBlockRestartInterval( long handle, int blockRestartInterval); + /** + * Compress blocks using the specified compression algorithm. This + parameter can be changed dynamically. + * + * Typical speeds of kSnappyCompression on an Intel(R) Core(TM)2 2.4GHz: + * ~200-500MB/s compression and ~400-800MB/s decompression. + * + * Note that these speeds are significantly faster than most + * persistent storage speeds, and therefore it is typically never + * worth switching to kNoCompression. Even if the input data is + * incompressible, the kSnappyCompression implementation will + * efficiently detect that and will switch to uncompressed mode. + * + * Default: kSnappyCompression, which gives lightweight but fast compression. + * + * @return Compression type. + */ public CompressionType compressionType() { return CompressionType.values()[compressionType(nativeHandle_)]; } private native int compressionType(long handle); + /** + * Compress blocks using the specified compression algorithm. This + parameter can be changed dynamically. + * + * Typical speeds of kSnappyCompression on an Intel(R) Core(TM)2 2.4GHz: + * ~200-500MB/s compression and ~400-800MB/s decompression. + * + * Note that these speeds are significantly faster than most + * persistent storage speeds, and therefore it is typically never + * worth switching to kNoCompression. Even if the input data is + * incompressible, the kSnappyCompression implementation will + * efficiently detect that and will switch to uncompressed mode. + * + * Default: kSnappyCompression, which gives lightweight but fast compression. + * + * @param compressionType Compression Type. + * @return the reference to the current option. + */ public Options setCompressionType(CompressionType compressionType) { setCompressionType(nativeHandle_, compressionType.getValue()); return this; From e8c592c6250f807fe6d0342d542f5a9e043e2058 Mon Sep 17 00:00:00 2001 From: Ankit Gupta Date: Mon, 7 Jul 2014 10:25:27 -0700 Subject: [PATCH 5/8] Add newline --- java/org/rocksdb/CompressionType.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/org/rocksdb/CompressionType.java b/java/org/rocksdb/CompressionType.java index 313a7813b..e93e7ee90 100644 --- a/java/org/rocksdb/CompressionType.java +++ b/java/org/rocksdb/CompressionType.java @@ -22,4 +22,4 @@ public enum CompressionType { public int getValue() { return value_; } -} \ No newline at end of file +} From 4efca96bb3edfc8f4699d0e5f55770b1a58dd3da Mon Sep 17 00:00:00 2001 From: Ankit Gupta Date: Mon, 7 Jul 2014 12:18:55 -0700 Subject: [PATCH 6/8] Change enum type from int to byte --- java/org/rocksdb/CompressionType.java | 18 +++++++++--------- java/org/rocksdb/Options.java | 4 ++-- java/rocksjni/options.cc | 4 ++-- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/java/org/rocksdb/CompressionType.java b/java/org/rocksdb/CompressionType.java index e93e7ee90..c5d6253a9 100644 --- a/java/org/rocksdb/CompressionType.java +++ b/java/org/rocksdb/CompressionType.java @@ -6,20 +6,20 @@ package org.rocksdb; public enum CompressionType { - NO_COMPRESSION(0), - SNAPPY_COMPRESSION(1), - ZLIB_COMPRESSION(2), - BZLIB2_COMPRESSION(3), - LZ4_COMPRESSION(4), - LZ4HC_COMPRESSION(5); + NO_COMPRESSION((byte) 0), + SNAPPY_COMPRESSION((byte) 1), + ZLIB_COMPRESSION((byte) 2), + BZLIB2_COMPRESSION((byte) 3), + LZ4_COMPRESSION((byte) 4), + LZ4HC_COMPRESSION((byte) 5); - private final int value_; + private final byte value_; - private CompressionType(int value) { + private CompressionType(byte value) { value_ = value; } - public int getValue() { + public byte getValue() { return value_; } } diff --git a/java/org/rocksdb/Options.java b/java/org/rocksdb/Options.java index b441d49e4..7e06a50c6 100644 --- a/java/org/rocksdb/Options.java +++ b/java/org/rocksdb/Options.java @@ -1328,7 +1328,7 @@ public class Options extends RocksObject { public CompressionType compressionType() { return CompressionType.values()[compressionType(nativeHandle_)]; } - private native int compressionType(long handle); + private native byte compressionType(long handle); /** * Compress blocks using the specified compression algorithm. This @@ -1352,7 +1352,7 @@ public class Options extends RocksObject { setCompressionType(nativeHandle_, compressionType.getValue()); return this; } - private native void setCompressionType(long handle, int compressionType); + private native void setCompressionType(long handle, byte compressionType); /** * If true, place whole keys in the filter (not just prefixes). diff --git a/java/rocksjni/options.cc b/java/rocksjni/options.cc index 16d13f8c9..7a2bea828 100644 --- a/java/rocksjni/options.cc +++ b/java/rocksjni/options.cc @@ -941,7 +941,7 @@ void Java_org_rocksdb_Options_setBlockRestartInterval( * Signature: (JI)V */ void Java_org_rocksdb_Options_setCompressionType( - JNIEnv* env, jobject jobj, jlong jhandle, jint compression) { + JNIEnv* env, jobject jobj, jlong jhandle, jbyte compression) { reinterpret_cast(jhandle)->compression = static_cast(compression); } @@ -951,7 +951,7 @@ void Java_org_rocksdb_Options_setCompressionType( * Method: compressionType * Signature: (J)I */ -jint Java_org_rocksdb_Options_compressionType( +jbyte Java_org_rocksdb_Options_compressionType( JNIEnv* env, jobject jobj, jlong jhandle) { return reinterpret_cast(jhandle)->compression; } From c9cfb88256c03d3d8002dc2f8374591930fb4f03 Mon Sep 17 00:00:00 2001 From: Ankit Gupta Date: Mon, 7 Jul 2014 12:21:15 -0700 Subject: [PATCH 7/8] Remove doc from options class --- java/org/rocksdb/Options.java | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/java/org/rocksdb/Options.java b/java/org/rocksdb/Options.java index 7e06a50c6..dac5aeb4e 100644 --- a/java/org/rocksdb/Options.java +++ b/java/org/rocksdb/Options.java @@ -1312,16 +1312,7 @@ public class Options extends RocksObject { * Compress blocks using the specified compression algorithm. This parameter can be changed dynamically. * - * Typical speeds of kSnappyCompression on an Intel(R) Core(TM)2 2.4GHz: - * ~200-500MB/s compression and ~400-800MB/s decompression. - * - * Note that these speeds are significantly faster than most - * persistent storage speeds, and therefore it is typically never - * worth switching to kNoCompression. Even if the input data is - * incompressible, the kSnappyCompression implementation will - * efficiently detect that and will switch to uncompressed mode. - * - * Default: kSnappyCompression, which gives lightweight but fast compression. + * Default: SNAPPY_COMPRESSION, which gives lightweight but fast compression. * * @return Compression type. */ @@ -1334,16 +1325,7 @@ public class Options extends RocksObject { * Compress blocks using the specified compression algorithm. This parameter can be changed dynamically. * - * Typical speeds of kSnappyCompression on an Intel(R) Core(TM)2 2.4GHz: - * ~200-500MB/s compression and ~400-800MB/s decompression. - * - * Note that these speeds are significantly faster than most - * persistent storage speeds, and therefore it is typically never - * worth switching to kNoCompression. Even if the input data is - * incompressible, the kSnappyCompression implementation will - * efficiently detect that and will switch to uncompressed mode. - * - * Default: kSnappyCompression, which gives lightweight but fast compression. + * Default: SNAPPY_COMPRESSION, which gives lightweight but fast compression. * * @param compressionType Compression Type. * @return the reference to the current option. From 97bfcd6a16b0684e8eeec1d3db32a72a14dca858 Mon Sep 17 00:00:00 2001 From: Ankit Gupta Date: Mon, 7 Jul 2014 12:26:06 -0700 Subject: [PATCH 8/8] Update doc of options.cc --- java/rocksjni/options.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/rocksjni/options.cc b/java/rocksjni/options.cc index 7a2bea828..763b28f5d 100644 --- a/java/rocksjni/options.cc +++ b/java/rocksjni/options.cc @@ -938,7 +938,7 @@ void Java_org_rocksdb_Options_setBlockRestartInterval( /* * Class: org_rocksdb_Options * Method: setCompressionType - * Signature: (JI)V + * Signature: (JB)V */ void Java_org_rocksdb_Options_setCompressionType( JNIEnv* env, jobject jobj, jlong jhandle, jbyte compression) { @@ -949,7 +949,7 @@ void Java_org_rocksdb_Options_setCompressionType( /* * Class: org_rocksdb_Options * Method: compressionType - * Signature: (J)I + * Signature: (J)B */ jbyte Java_org_rocksdb_Options_compressionType( JNIEnv* env, jobject jobj, jlong jhandle) {