Skip to content

Commit 85616b7

Browse files
committed
Add RocksDB.flushWal(FlushWALOptions) overload
1 parent 5fa4797 commit 85616b7

2 files changed

Lines changed: 33 additions & 2 deletions

File tree

java/rocksjni/rocksjni.cc

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3112,15 +3112,33 @@ void Java_org_rocksdb_RocksDB_flush(JNIEnv* env, jclass, jlong jdb_handle,
31123112
* Method: flushWal
31133113
* Signature: (JZ)V
31143114
*/
3115-
void Java_org_rocksdb_RocksDB_flushWal(JNIEnv* env, jclass, jlong jdb_handle,
3116-
jboolean jsync) {
3115+
void Java_org_rocksdb_RocksDB_flushWal__JZ(JNIEnv* env, jclass,
3116+
jlong jdb_handle, jboolean jsync) {
31173117
auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
31183118
auto s = db->FlushWAL(jsync == JNI_TRUE);
31193119
if (!s.ok()) {
31203120
ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
31213121
}
31223122
}
31233123

3124+
/*
3125+
* Class: org_rocksdb_RocksDB
3126+
* Method: flushWal
3127+
* Signature: (JJ)V
3128+
*/
3129+
void Java_org_rocksdb_RocksDB_flushWal__JJ(JNIEnv* env, jclass,
3130+
jlong jdb_handle,
3131+
jlong jflush_wal_options_handle) {
3132+
auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3133+
auto* flush_wal_options =
3134+
reinterpret_cast<ROCKSDB_NAMESPACE::FlushWALOptions*>(
3135+
jflush_wal_options_handle);
3136+
auto s = db->FlushWAL(*flush_wal_options);
3137+
if (!s.ok()) {
3138+
ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3139+
}
3140+
}
3141+
31243142
/*
31253143
* Class: org_rocksdb_RocksDB
31263144
* Method: syncWal

java/src/main/java/org/rocksdb/RocksDB.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4272,6 +4272,17 @@ public void flushWal(final boolean sync) throws RocksDBException {
42724272
flushWal(nativeHandle_, sync);
42734273
}
42744274

4275+
/**
4276+
* Flush the WAL buffer to disk with advanced control.
4277+
* Use this for fine-grained control over sync behavior and I/O rate limiting.
4278+
*
4279+
* @param flushWALOptions controls sync and rate limiter priority
4280+
* @throws RocksDBException if flush fails
4281+
*/
4282+
public void flushWal(final FlushWALOptions flushWALOptions) throws RocksDBException {
4283+
flushWal(nativeHandle_, flushWALOptions.nativeHandle_);
4284+
}
4285+
42754286
/**
42764287
* Sync the WAL.
42774288
* <p>
@@ -5048,6 +5059,8 @@ private static native void flush(final long handle, final long flushOptHandle,
50485059
/* @Nullable */ final long[] cfHandles) throws RocksDBException;
50495060
private static native void flushWal(final long handle, final boolean sync)
50505061
throws RocksDBException;
5062+
private static native void flushWal(final long handle, final long flushWALOptionsHandle)
5063+
throws RocksDBException;
50515064
private static native void syncWal(final long handle) throws RocksDBException;
50525065
private static native long getLatestSequenceNumber(final long handle);
50535066
private static native void disableFileDeletions(long handle) throws RocksDBException;

0 commit comments

Comments
 (0)