mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
[Java] Add Java bindings for memtables and sst format.
Summary: Add Java bindings for memtables and sst format. Specifically, add two abstract Java classses --- MemTableConfig and SstFormatConfig. Each MemTable / SST implementation should has its own config class extends MemTableConfig / SstFormatConfig respectively and pass it to Options via setMemTableConfig / setSstConfig. Test Plan: make rocksdbjava make jdb_test make jdb_bench java/jdb_bench.sh \ --benchmarks=fillseq,readrandom,readwhilewriting \ --memtablerep=hash_skiplist \ --use_plain_table=1 \ --key_size=20 \ --prefix_size=12 \ --value_size=100 \ --cache_size=17179869184 \ --disable_wal=0 \ --sync=0 \ Reviewers: haobo, ankgup87, sdong Reviewed By: haobo CC: leveldb, dhruba Differential Revision: https://reviews.facebook.net/D17997
This commit is contained in:
@@ -17,6 +17,9 @@
|
||||
#include "rocksdb/db.h"
|
||||
#include "rocksdb/options.h"
|
||||
#include "rocksdb/statistics.h"
|
||||
#include "rocksdb/memtablerep.h"
|
||||
#include "rocksdb/table.h"
|
||||
#include "rocksdb/slice_transform.h"
|
||||
|
||||
/*
|
||||
* Class: org_rocksdb_Options
|
||||
@@ -479,6 +482,27 @@ jlong Java_org_rocksdb_Options_maxManifestFileSize(
|
||||
return reinterpret_cast<rocksdb::Options*>(jhandle)->max_manifest_file_size;
|
||||
}
|
||||
|
||||
/*
|
||||
* Method: memTableFactoryName
|
||||
* Signature: (J)Ljava/lang/String
|
||||
*/
|
||||
jstring Java_org_rocksdb_Options_memTableFactoryName(
|
||||
JNIEnv* env, jobject jobj, jlong jhandle) {
|
||||
auto opt = reinterpret_cast<rocksdb::Options*>(jhandle);
|
||||
rocksdb::MemTableRepFactory* tf = opt->memtable_factory.get();
|
||||
|
||||
// Should never be nullptr.
|
||||
// Default memtable factory is SkipListFactory
|
||||
assert(tf);
|
||||
|
||||
// temporarly fix for the historical typo
|
||||
if (strcmp(tf->Name(), "HashLinkListRepFactory") == 0) {
|
||||
return env->NewStringUTF("HashLinkedListRepFactory");
|
||||
}
|
||||
|
||||
return env->NewStringUTF(tf->Name());
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_rocksdb_Options
|
||||
* Method: setMaxManifestFileSize
|
||||
@@ -490,6 +514,16 @@ void Java_org_rocksdb_Options_setMaxManifestFileSize(
|
||||
static_cast<int64_t>(max_manifest_file_size);
|
||||
}
|
||||
|
||||
/*
|
||||
* Method: setMemTableFactory
|
||||
* Signature: (JJ)V
|
||||
*/
|
||||
void Java_org_rocksdb_Options_setMemTableFactory(
|
||||
JNIEnv* env, jobject jobj, jlong jhandle, jlong jfactory_handle) {
|
||||
reinterpret_cast<rocksdb::Options*>(jhandle)->memtable_factory.reset(
|
||||
reinterpret_cast<rocksdb::MemTableRepFactory*>(jfactory_handle));
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_rocksdb_Options
|
||||
* Method: tableCacheNumshardbits
|
||||
@@ -533,6 +567,16 @@ void Java_org_rocksdb_Options_setTableCacheRemoveScanCountLimit(
|
||||
jhandle)->table_cache_remove_scan_count_limit = static_cast<int>(limit);
|
||||
}
|
||||
|
||||
/*
|
||||
* Method: useFixedLengthPrefixExtractor
|
||||
* Signature: (JI)V
|
||||
*/
|
||||
void Java_org_rocksdb_Options_useFixedLengthPrefixExtractor(
|
||||
JNIEnv* env, jobject jobj, jlong jhandle, jint jprefix_length) {
|
||||
reinterpret_cast<rocksdb::Options*>(jhandle)->prefix_extractor.reset(
|
||||
rocksdb::NewFixedPrefixTransform(static_cast<size_t>(jprefix_length)));
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_rocksdb_Options
|
||||
* Method: walTtlSeconds
|
||||
@@ -597,6 +641,16 @@ void Java_org_rocksdb_Options_setAllowOsBuffer(
|
||||
static_cast<bool>(allow_os_buffer);
|
||||
}
|
||||
|
||||
/*
|
||||
* Method: setTableFactory
|
||||
* Signature: (JJ)V
|
||||
*/
|
||||
void Java_org_rocksdb_Options_setTableFactory(
|
||||
JNIEnv* env, jobject jobj, jlong jhandle, jlong jfactory_handle) {
|
||||
reinterpret_cast<rocksdb::Options*>(jhandle)->table_factory.reset(
|
||||
reinterpret_cast<rocksdb::TableFactory*>(jfactory_handle));
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_rocksdb_Options
|
||||
* Method: allowMmapReads
|
||||
@@ -787,6 +841,22 @@ void Java_org_rocksdb_Options_setAllowThreadLocal(
|
||||
static_cast<bool>(allow_thread_local);
|
||||
}
|
||||
|
||||
/*
|
||||
* Method: tableFactoryName
|
||||
* Signature: (J)Ljava/lang/String
|
||||
*/
|
||||
jstring Java_org_rocksdb_Options_tableFactoryName(
|
||||
JNIEnv* env, jobject jobj, jlong jhandle) {
|
||||
auto opt = reinterpret_cast<rocksdb::Options*>(jhandle);
|
||||
rocksdb::TableFactory* tf = opt->table_factory.get();
|
||||
|
||||
// Should never be nullptr.
|
||||
// Default memtable factory is SkipListFactory
|
||||
assert(tf);
|
||||
|
||||
return env->NewStringUTF(tf->Name());
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// WriteOptions
|
||||
|
||||
|
||||
Reference in New Issue
Block a user