Skip to content

Commit 63d74d2

Browse files
committed
Expose JNI layer for these options: block_size, max_write_buffer_number, write_buffer_size, disable_seek_compaction, max_background_compactions.
1 parent 3699fda commit 63d74d2

File tree

3 files changed

+222
-3
lines changed

3 files changed

+222
-3
lines changed

java/RocksDBSample.java

+13
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,19 @@ public static void main(String[] args) {
3333
}
3434

3535
options.setCreateIfMissing(true);
36+
options.setWriteBufferSize(8*1024);
37+
options.setMaxWriteBufferNumber(3);
38+
options.setDisableSeekCompaction(true);
39+
options.setBlockSize(64*1024);
40+
options.setMaxBackgroundCompactions(10);
41+
42+
assert(options.createIfMissing() == true);
43+
assert(options.writeBufferSize() == 8192);
44+
assert(options.maxWriteBufferNumber() == 3);
45+
assert(options.disableSeekCompaction() == true);
46+
assert(options.blockSize() == 65536);
47+
assert(options.maxBackgroundCompactions() == 10);
48+
3649
try {
3750
db = RocksDB.open(options, db_path_not_found);
3851
db.put("hello".getBytes(), "world".getBytes());

java/org/rocksdb/Options.java

+104-3
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public Options() {
3434
* @see RocksDB::Open()
3535
*/
3636
public void setCreateIfMissing(boolean flag) {
37-
assert(nativeHandle_ != 0);
37+
checkInitialization();
3838
setCreateIfMissing(nativeHandle_, flag);
3939
}
4040

@@ -45,10 +45,97 @@ public void setCreateIfMissing(boolean flag) {
4545
* @return return true if the create_if_missing flag is set to true.
4646
* @see setCreateIfMissing()
4747
*/
48-
public boolean craeteIfMissing() {
49-
assert(nativeHandle_ != 0);
48+
public boolean createIfMissing() {
49+
checkInitialization();
5050
return createIfMissing(nativeHandle_);
5151
}
52+
53+
/**
54+
* Amount of data to build up in memory (backed by an unsorted log
55+
* on disk) before converting to a sorted on-disk file.
56+
*
57+
* Larger values increase performance, especially during bulk loads.
58+
* Up to max_write_buffer_number write buffers may be held in memory
59+
* at the same time, so you may wish to adjust this parameter
60+
* to control memory usage.
61+
*
62+
* Also, a larger write buffer will result in a longer recovery time
63+
* the next time the database is opened.
64+
*
65+
* Default: 4MB
66+
* @param size of write buffer
67+
* @see RocksDB::Open()
68+
*/
69+
public void setWriteBufferSize(int writeBufferSize) {
70+
checkInitialization();
71+
setWriteBufferSize(nativeHandle_, writeBufferSize);
72+
}
73+
74+
/**
75+
* Return size of write buffer size.
76+
*
77+
* @return size of write buffer.
78+
* @see setWriteBufferSize()
79+
*/
80+
public int writeBufferSize() {
81+
checkInitialization();
82+
return writeBufferSize(nativeHandle_);
83+
}
84+
85+
/**
86+
* The maximum number of write buffers that are built up in memory.
87+
* The default is 2, so that when 1 write buffer is being flushed to
88+
* storage, new writes can continue to the other write buffer.
89+
* Default: 2
90+
*
91+
* @param maximum number of write buffers
92+
* @see RocksDB::Open()
93+
*/
94+
public void setMaxWriteBufferNumber(int maxWriteBufferNumber) {
95+
checkInitialization();
96+
setMaxWriteBufferNumber(nativeHandle_, maxWriteBufferNumber);
97+
}
98+
99+
/**
100+
* Returns maximum number of write buffers.
101+
*
102+
* @return maximum number of write buffers.
103+
* @see setMaxWriteBufferNumber()
104+
*/
105+
public int maxWriteBufferNumber() {
106+
checkInitialization();
107+
return maxWriteBufferNumber(nativeHandle_);
108+
}
109+
110+
public void setBlockSize(int blockSize) {
111+
checkInitialization();
112+
setBlockSize(nativeHandle_, blockSize);
113+
}
114+
115+
public int blockSize() {
116+
checkInitialization();
117+
return blockSize(nativeHandle_);
118+
}
119+
120+
public void setDisableSeekCompaction(boolean disableSeekCompaction) {
121+
checkInitialization();
122+
setDisableSeekCompaction(nativeHandle_, disableSeekCompaction);
123+
}
124+
125+
public boolean disableSeekCompaction() {
126+
checkInitialization();
127+
return disableSeekCompaction(nativeHandle_);
128+
}
129+
130+
public void setMaxBackgroundCompactions(int maxBackgroundCompactions) {
131+
checkInitialization();
132+
setMaxBackgroundCompactions(nativeHandle_, maxBackgroundCompactions);
133+
}
134+
135+
public int maxBackgroundCompactions() {
136+
checkInitialization();
137+
return maxBackgroundCompactions(nativeHandle_);
138+
}
52139

53140
/**
54141
* Release the memory allocated for the current instance
@@ -59,11 +146,25 @@ public synchronized void dispose() {
59146
dispose0();
60147
}
61148
}
149+
150+
private void checkInitialization() {
151+
assert(nativeHandle_ != 0);
152+
}
62153

63154
private native void newOptions();
64155
private native void dispose0();
65156
private native void setCreateIfMissing(long handle, boolean flag);
66157
private native boolean createIfMissing(long handle);
158+
private native void setWriteBufferSize(long handle, int writeBufferSize);
159+
private native int writeBufferSize(long handle);
160+
private native void setMaxWriteBufferNumber(long handle, int maxWriteBufferNumber);
161+
private native int maxWriteBufferNumber(long handle);
162+
private native void setBlockSize(long handle, int blockSize);
163+
private native int blockSize(long handle);
164+
private native void setDisableSeekCompaction(long handle, boolean disableSeekCompaction);
165+
private native boolean disableSeekCompaction(long handle);
166+
private native void setMaxBackgroundCompactions(long handle, int maxBackgroundCompactions);
167+
private native int maxBackgroundCompactions(long handle);
67168

68169
long nativeHandle_;
69170
}

java/rocksjni/options.cc

+105
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,111 @@ jboolean Java_org_rocksdb_Options_createIfMissing(
5858
return reinterpret_cast<rocksdb::Options*>(jhandle)->create_if_missing;
5959
}
6060

61+
/*
62+
* Class: org_rocksdb_Options
63+
* Method: setWriteBufferSize
64+
* Signature: (JZ)I
65+
*/
66+
void Java_org_rocksdb_Options_setWriteBufferSize(
67+
JNIEnv* env, jobject jobj, jlong jhandle, jint jwrite_buffer_size) {
68+
reinterpret_cast<rocksdb::Options*>(jhandle)->write_buffer_size =
69+
static_cast<size_t>(jwrite_buffer_size);
70+
}
71+
72+
73+
/*
74+
* Class: org_rocksdb_Options
75+
* Method: writeBufferSize
76+
* Signature: (J)I
77+
*/
78+
jint Java_org_rocksdb_Options_writeBufferSize(
79+
JNIEnv* env, jobject jobj, jlong jhandle) {
80+
return reinterpret_cast<rocksdb::Options*>(jhandle)->write_buffer_size;
81+
}
82+
83+
/*
84+
* Class: org_rocksdb_Options
85+
* Method: setMaxWriteBufferNumber
86+
* Signature: (JI)V
87+
*/
88+
void Java_org_rocksdb_Options_setMaxWriteBufferNumber(
89+
JNIEnv* env, jobject jobj, jlong jhandle, jint jmax_write_buffer_number) {
90+
reinterpret_cast<rocksdb::Options*>(jhandle)->max_write_buffer_number = jmax_write_buffer_number;
91+
}
92+
93+
94+
/*
95+
* Class: org_rocksdb_Options
96+
* Method: maxWriteBufferNumber
97+
* Signature: (J)I
98+
*/
99+
jint Java_org_rocksdb_Options_maxWriteBufferNumber(
100+
JNIEnv* env, jobject jobj, jlong jhandle) {
101+
return reinterpret_cast<rocksdb::Options*>(jhandle)->max_write_buffer_number;
102+
}
103+
104+
/*
105+
* Class: org_rocksdb_Options
106+
* Method: setBlockSize
107+
* Signature: (JI)V
108+
*/
109+
void Java_org_rocksdb_Options_setBlockSize(
110+
JNIEnv* env, jobject jobj, jlong jhandle, jint jblock_size) {
111+
reinterpret_cast<rocksdb::Options*>(jhandle)->block_size =
112+
static_cast<size_t>(jblock_size);
113+
}
114+
115+
/*
116+
* Class: org_rocksdb_Options
117+
* Method: blockSize
118+
* Signature: (J)I
119+
*/
120+
jint Java_org_rocksdb_Options_blockSize(
121+
JNIEnv* env, jobject jobj, jlong jhandle) {
122+
return reinterpret_cast<rocksdb::Options*>(jhandle)->block_size;
123+
}
124+
125+
/*
126+
* Class: org_rocksdb_Options
127+
* Method: setDisableSeekCompaction
128+
* Signature: (JZ)V
129+
*/
130+
void Java_org_rocksdb_Options_setDisableSeekCompaction(
131+
JNIEnv* env, jobject jobj, jlong jhandle, jboolean jdisable_seek_compaction) {
132+
reinterpret_cast<rocksdb::Options*>(jhandle)->disable_seek_compaction = jdisable_seek_compaction;
133+
}
134+
135+
/*
136+
* Class: org_rocksdb_Options
137+
* Method: disableSeekCompaction
138+
* Signature: (J)Z
139+
*/
140+
jboolean Java_org_rocksdb_Options_disableSeekCompaction(
141+
JNIEnv* env, jobject jobj, jlong jhandle) {
142+
return reinterpret_cast<rocksdb::Options*>(jhandle)->disable_seek_compaction;
143+
}
144+
145+
/*
146+
* Class: org_rocksdb_Options
147+
* Method: setMaxBackgroundCompactions
148+
* Signature: (JI)V
149+
*/
150+
void Java_org_rocksdb_Options_setMaxBackgroundCompactions(
151+
JNIEnv* env, jobject jobj, jlong jhandle, jint jmax_background_compactions) {
152+
reinterpret_cast<rocksdb::Options*>(jhandle)->max_background_compactions = jmax_background_compactions;
153+
}
154+
155+
/*
156+
* Class: org_rocksdb_Options
157+
* Method: maxBackgroundCompactions
158+
* Signature: (J)I
159+
*/
160+
jint Java_org_rocksdb_Options_maxBackgroundCompactions(
161+
JNIEnv* env, jobject jobj, jlong jhandle) {
162+
return reinterpret_cast<rocksdb::Options*>(jhandle)->max_background_compactions;
163+
}
164+
165+
61166
//////////////////////////////////////////////////////////////////////////////
62167
// WriteOptions
63168

0 commit comments

Comments
 (0)