Run format check for *.h and *.cc files under java/ (#10851)

Summary:
Run format check for .h and .cc files to clean the format

Pull Request resolved: https://github.com/facebook/rocksdb/pull/10851

Test Plan: Watch CI tests to pass

Reviewed By: ajkr

Differential Revision: D40649723

fbshipit-source-id: 62d32cead0b3b8e6540e86d25451bd72642109eb
main
sdong 2 years ago committed by Facebook GitHub Bot
parent de34e7196f
commit 2a551976f4
  1. 64
      java/rocksjni/compact_range_options.cc
  2. 3
      java/rocksjni/compaction_filter.cc
  3. 27
      java/rocksjni/compaction_filter_factory_jnicallback.cc
  4. 16
      java/rocksjni/compaction_filter_factory_jnicallback.h
  5. 54
      java/rocksjni/compaction_job_info.cc
  6. 134
      java/rocksjni/compaction_job_stats.cc
  7. 28
      java/rocksjni/compaction_options.cc
  8. 17
      java/rocksjni/compaction_options_fifo.cc
  9. 19
      java/rocksjni/compaction_options_universal.cc
  10. 5
      java/rocksjni/comparator.cc
  11. 284
      java/rocksjni/comparatorjnicallback.cc
  12. 102
      java/rocksjni/comparatorjnicallback.h
  13. 56
      java/rocksjni/compression_options.cc
  14. 3
      java/rocksjni/config_options.cc
  15. 56
      java/rocksjni/env.cc
  16. 100
      java/rocksjni/env_options.cc
  17. 22
      java/rocksjni/ingest_external_file_options.cc
  18. 8
      java/rocksjni/jnicallback.cc
  19. 4
      java/rocksjni/jnicallback.h
  20. 10
      java/rocksjni/loggerjnicallback.h
  21. 18
      java/rocksjni/memory_util.cc
  22. 12
      java/rocksjni/optimistic_transaction_db.cc
  23. 1435
      java/rocksjni/options.cc
  24. 5
      java/rocksjni/options_util.cc
  25. 8
      java/rocksjni/persistent_cache.cc
  26. 2651
      java/rocksjni/portal.h
  27. 1
      java/rocksjni/rocksdb_exception_test.cc
  28. 596
      java/rocksjni/rocksjni.cc
  29. 17
      java/rocksjni/sst_file_reader_iterator.cc
  30. 59
      java/rocksjni/statistics.cc
  31. 7
      java/rocksjni/statisticsjni.h
  32. 13
      java/rocksjni/table.cc
  33. 10
      java/rocksjni/table_filter_jnicallback.cc
  34. 18
      java/rocksjni/table_filter_jnicallback.h
  35. 16
      java/rocksjni/thread_status.cc
  36. 4
      java/rocksjni/trace_writer.cc
  37. 45
      java/rocksjni/trace_writer_jnicallback.cc
  38. 16
      java/rocksjni/trace_writer_jnicallback.h
  39. 10
      java/rocksjni/transaction.cc
  40. 25
      java/rocksjni/transaction_db.cc
  41. 3
      java/rocksjni/transaction_log.cc
  42. 7
      java/rocksjni/transaction_notifier_jnicallback.cc
  43. 4
      java/rocksjni/transaction_notifier_jnicallback.h
  44. 33
      java/rocksjni/ttl.cc
  45. 4
      java/rocksjni/wal_filter.cc
  46. 39
      java/rocksjni/wal_filter_jnicallback.cc
  47. 24
      java/rocksjni/wal_filter_jnicallback.h
  48. 3
      java/rocksjni/write_batch_test.cc
  49. 3
      java/rocksjni/write_batch_with_index.cc
  50. 5
      java/rocksjni/write_buffer_manager.cc
  51. 219
      java/rocksjni/writebatchhandlerjnicallback.cc
  52. 123
      java/rocksjni/writebatchhandlerjnicallback.h

@ -24,7 +24,6 @@ jlong Java_org_rocksdb_CompactRangeOptions_newCompactRangeOptions(
return GET_CPLUSPLUS_POINTER(options); return GET_CPLUSPLUS_POINTER(options);
} }
/* /*
* Class: org_rocksdb_CompactRangeOptions * Class: org_rocksdb_CompactRangeOptions
* Method: exclusiveManualCompaction * Method: exclusiveManualCompaction
@ -43,13 +42,14 @@ jboolean Java_org_rocksdb_CompactRangeOptions_exclusiveManualCompaction(
* Signature: (JZ)V * Signature: (JZ)V
*/ */
void Java_org_rocksdb_CompactRangeOptions_setExclusiveManualCompaction( void Java_org_rocksdb_CompactRangeOptions_setExclusiveManualCompaction(
JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle, jboolean exclusive_manual_compaction) { JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle,
jboolean exclusive_manual_compaction) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle);
options->exclusive_manual_compaction = static_cast<bool>(exclusive_manual_compaction); options->exclusive_manual_compaction =
static_cast<bool>(exclusive_manual_compaction);
} }
/* /*
* Class: org_rocksdb_CompactRangeOptions * Class: org_rocksdb_CompactRangeOptions
* Method: bottommostLevelCompaction * Method: bottommostLevelCompaction
@ -83,8 +83,9 @@ void Java_org_rocksdb_CompactRangeOptions_setBottommostLevelCompaction(
* Method: changeLevel * Method: changeLevel
* Signature: (J)Z * Signature: (J)Z
*/ */
jboolean Java_org_rocksdb_CompactRangeOptions_changeLevel jboolean Java_org_rocksdb_CompactRangeOptions_changeLevel(JNIEnv* /*env*/,
(JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle) { jobject /*jobj*/,
jlong jhandle) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle);
return static_cast<jboolean>(options->change_level); return static_cast<jboolean>(options->change_level);
@ -95,8 +96,8 @@ jboolean Java_org_rocksdb_CompactRangeOptions_changeLevel
* Method: setChangeLevel * Method: setChangeLevel
* Signature: (JZ)V * Signature: (JZ)V
*/ */
void Java_org_rocksdb_CompactRangeOptions_setChangeLevel void Java_org_rocksdb_CompactRangeOptions_setChangeLevel(
(JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle, jboolean change_level) { JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle, jboolean change_level) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle);
options->change_level = static_cast<bool>(change_level); options->change_level = static_cast<bool>(change_level);
@ -107,8 +108,9 @@ void Java_org_rocksdb_CompactRangeOptions_setChangeLevel
* Method: targetLevel * Method: targetLevel
* Signature: (J)I * Signature: (J)I
*/ */
jint Java_org_rocksdb_CompactRangeOptions_targetLevel jint Java_org_rocksdb_CompactRangeOptions_targetLevel(JNIEnv* /*env*/,
(JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle) { jobject /*jobj*/,
jlong jhandle) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle);
return static_cast<jint>(options->target_level); return static_cast<jint>(options->target_level);
@ -119,8 +121,10 @@ jint Java_org_rocksdb_CompactRangeOptions_targetLevel
* Method: setTargetLevel * Method: setTargetLevel
* Signature: (JI)V * Signature: (JI)V
*/ */
void Java_org_rocksdb_CompactRangeOptions_setTargetLevel void Java_org_rocksdb_CompactRangeOptions_setTargetLevel(JNIEnv* /*env*/,
(JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle, jint target_level) { jobject /*jobj*/,
jlong jhandle,
jint target_level) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle);
options->target_level = static_cast<int>(target_level); options->target_level = static_cast<int>(target_level);
@ -131,8 +135,9 @@ void Java_org_rocksdb_CompactRangeOptions_setTargetLevel
* Method: targetPathId * Method: targetPathId
* Signature: (J)I * Signature: (J)I
*/ */
jint Java_org_rocksdb_CompactRangeOptions_targetPathId jint Java_org_rocksdb_CompactRangeOptions_targetPathId(JNIEnv* /*env*/,
(JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle) { jobject /*jobj*/,
jlong jhandle) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle);
return static_cast<jint>(options->target_path_id); return static_cast<jint>(options->target_path_id);
@ -143,8 +148,10 @@ jint Java_org_rocksdb_CompactRangeOptions_targetPathId
* Method: setTargetPathId * Method: setTargetPathId
* Signature: (JI)V * Signature: (JI)V
*/ */
void Java_org_rocksdb_CompactRangeOptions_setTargetPathId void Java_org_rocksdb_CompactRangeOptions_setTargetPathId(JNIEnv* /*env*/,
(JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle, jint target_path_id) { jobject /*jobj*/,
jlong jhandle,
jint target_path_id) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle);
options->target_path_id = static_cast<uint32_t>(target_path_id); options->target_path_id = static_cast<uint32_t>(target_path_id);
@ -155,8 +162,9 @@ void Java_org_rocksdb_CompactRangeOptions_setTargetPathId
* Method: allowWriteStall * Method: allowWriteStall
* Signature: (J)Z * Signature: (J)Z
*/ */
jboolean Java_org_rocksdb_CompactRangeOptions_allowWriteStall jboolean Java_org_rocksdb_CompactRangeOptions_allowWriteStall(JNIEnv* /*env*/,
(JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle) { jobject /*jobj*/,
jlong jhandle) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle);
return static_cast<jboolean>(options->allow_write_stall); return static_cast<jboolean>(options->allow_write_stall);
@ -167,21 +175,22 @@ jboolean Java_org_rocksdb_CompactRangeOptions_allowWriteStall
* Method: setAllowWriteStall * Method: setAllowWriteStall
* Signature: (JZ)V * Signature: (JZ)V
*/ */
void Java_org_rocksdb_CompactRangeOptions_setAllowWriteStall void Java_org_rocksdb_CompactRangeOptions_setAllowWriteStall(
(JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle, jboolean allow_write_stall) { JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle,
jboolean allow_write_stall) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle);
options->allow_write_stall = static_cast<bool>(allow_write_stall); options->allow_write_stall = static_cast<bool>(allow_write_stall);
} }
/* /*
* Class: org_rocksdb_CompactRangeOptions * Class: org_rocksdb_CompactRangeOptions
* Method: maxSubcompactions * Method: maxSubcompactions
* Signature: (J)I * Signature: (J)I
*/ */
jint Java_org_rocksdb_CompactRangeOptions_maxSubcompactions jint Java_org_rocksdb_CompactRangeOptions_maxSubcompactions(JNIEnv* /*env*/,
(JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle) { jobject /*jobj*/,
jlong jhandle) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle);
return static_cast<jint>(options->max_subcompactions); return static_cast<jint>(options->max_subcompactions);
@ -192,8 +201,8 @@ jint Java_org_rocksdb_CompactRangeOptions_maxSubcompactions
* Method: setMaxSubcompactions * Method: setMaxSubcompactions
* Signature: (JI)V * Signature: (JI)V
*/ */
void Java_org_rocksdb_CompactRangeOptions_setMaxSubcompactions void Java_org_rocksdb_CompactRangeOptions_setMaxSubcompactions(
(JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle, jint max_subcompactions) { JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle, jint max_subcompactions) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle);
options->max_subcompactions = static_cast<uint32_t>(max_subcompactions); options->max_subcompactions = static_cast<uint32_t>(max_subcompactions);
@ -204,8 +213,9 @@ void Java_org_rocksdb_CompactRangeOptions_setMaxSubcompactions
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_CompactRangeOptions_disposeInternal( void Java_org_rocksdb_CompactRangeOptions_disposeInternal(JNIEnv* /*env*/,
JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle) { jobject /*jobj*/,
jlong jhandle) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(jhandle);
delete options; delete options;

@ -6,10 +6,11 @@
// This file implements the "bridge" between Java and C++ for // This file implements the "bridge" between Java and C++ for
// ROCKSDB_NAMESPACE::CompactionFilter. // ROCKSDB_NAMESPACE::CompactionFilter.
#include "rocksdb/compaction_filter.h"
#include <jni.h> #include <jni.h>
#include "include/org_rocksdb_AbstractCompactionFilter.h" #include "include/org_rocksdb_AbstractCompactionFilter.h"
#include "rocksdb/compaction_filter.h"
// <editor-fold desc="org.rocksdb.AbstractCompactionFilter"> // <editor-fold desc="org.rocksdb.AbstractCompactionFilter">

@ -7,38 +7,40 @@
// ROCKSDB_NAMESPACE::CompactionFilterFactory. // ROCKSDB_NAMESPACE::CompactionFilterFactory.
#include "rocksjni/compaction_filter_factory_jnicallback.h" #include "rocksjni/compaction_filter_factory_jnicallback.h"
#include "rocksjni/portal.h" #include "rocksjni/portal.h"
namespace ROCKSDB_NAMESPACE { namespace ROCKSDB_NAMESPACE {
CompactionFilterFactoryJniCallback::CompactionFilterFactoryJniCallback( CompactionFilterFactoryJniCallback::CompactionFilterFactoryJniCallback(
JNIEnv* env, jobject jcompaction_filter_factory) JNIEnv* env, jobject jcompaction_filter_factory)
: JniCallback(env, jcompaction_filter_factory) { : JniCallback(env, jcompaction_filter_factory) {
// Note: The name of a CompactionFilterFactory will not change during // Note: The name of a CompactionFilterFactory will not change during
// it's lifetime, so we cache it in a global var // it's lifetime, so we cache it in a global var
jmethodID jname_method_id = jmethodID jname_method_id =
AbstractCompactionFilterFactoryJni::getNameMethodId(env); AbstractCompactionFilterFactoryJni::getNameMethodId(env);
if(jname_method_id == nullptr) { if (jname_method_id == nullptr) {
// exception thrown: NoSuchMethodException or OutOfMemoryError // exception thrown: NoSuchMethodException or OutOfMemoryError
return; return;
} }
jstring jname = jstring jname =
(jstring)env->CallObjectMethod(m_jcallback_obj, jname_method_id); (jstring)env->CallObjectMethod(m_jcallback_obj, jname_method_id);
if(env->ExceptionCheck()) { if (env->ExceptionCheck()) {
// exception thrown // exception thrown
return; return;
} }
jboolean has_exception = JNI_FALSE; jboolean has_exception = JNI_FALSE;
m_name = JniUtil::copyString(env, jname, &has_exception); // also releases jname m_name =
JniUtil::copyString(env, jname, &has_exception); // also releases jname
if (has_exception == JNI_TRUE) { if (has_exception == JNI_TRUE) {
// exception thrown // exception thrown
return; return;
} }
m_jcreate_compaction_filter_methodid = m_jcreate_compaction_filter_methodid =
AbstractCompactionFilterFactoryJni::getCreateCompactionFilterMethodId(env); AbstractCompactionFilterFactoryJni::getCreateCompactionFilterMethodId(
if(m_jcreate_compaction_filter_methodid == nullptr) { env);
if (m_jcreate_compaction_filter_methodid == nullptr) {
// exception thrown: NoSuchMethodException or OutOfMemoryError // exception thrown: NoSuchMethodException or OutOfMemoryError
return; return;
} }
@ -48,18 +50,19 @@ const char* CompactionFilterFactoryJniCallback::Name() const {
return m_name.get(); return m_name.get();
} }
std::unique_ptr<CompactionFilter> CompactionFilterFactoryJniCallback::CreateCompactionFilter( std::unique_ptr<CompactionFilter>
CompactionFilterFactoryJniCallback::CreateCompactionFilter(
const CompactionFilter::Context& context) { const CompactionFilter::Context& context) {
jboolean attached_thread = JNI_FALSE; jboolean attached_thread = JNI_FALSE;
JNIEnv* env = getJniEnv(&attached_thread); JNIEnv* env = getJniEnv(&attached_thread);
assert(env != nullptr); assert(env != nullptr);
jlong addr_compaction_filter = env->CallLongMethod(m_jcallback_obj, jlong addr_compaction_filter =
m_jcreate_compaction_filter_methodid, env->CallLongMethod(m_jcallback_obj, m_jcreate_compaction_filter_methodid,
static_cast<jboolean>(context.is_full_compaction), static_cast<jboolean>(context.is_full_compaction),
static_cast<jboolean>(context.is_manual_compaction)); static_cast<jboolean>(context.is_manual_compaction));
if(env->ExceptionCheck()) { if (env->ExceptionCheck()) {
// exception thrown from CallLongMethod // exception thrown from CallLongMethod
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);

@ -10,6 +10,7 @@
#define JAVA_ROCKSJNI_COMPACTION_FILTER_FACTORY_JNICALLBACK_H_ #define JAVA_ROCKSJNI_COMPACTION_FILTER_FACTORY_JNICALLBACK_H_
#include <jni.h> #include <jni.h>
#include <memory> #include <memory>
#include "rocksdb/compaction_filter.h" #include "rocksdb/compaction_filter.h"
@ -17,17 +18,18 @@
namespace ROCKSDB_NAMESPACE { namespace ROCKSDB_NAMESPACE {
class CompactionFilterFactoryJniCallback : public JniCallback, public CompactionFilterFactory { class CompactionFilterFactoryJniCallback : public JniCallback,
public CompactionFilterFactory {
public: public:
CompactionFilterFactoryJniCallback( CompactionFilterFactoryJniCallback(JNIEnv* env,
JNIEnv* env, jobject jcompaction_filter_factory); jobject jcompaction_filter_factory);
virtual std::unique_ptr<CompactionFilter> CreateCompactionFilter( virtual std::unique_ptr<CompactionFilter> CreateCompactionFilter(
const CompactionFilter::Context& context); const CompactionFilter::Context& context);
virtual const char* Name() const; virtual const char* Name() const;
private: private:
std::unique_ptr<const char[]> m_name; std::unique_ptr<const char[]> m_name;
jmethodID m_jcreate_compaction_filter_methodid; jmethodID m_jcreate_compaction_filter_methodid;
}; };
} // namespace ROCKSDB_NAMESPACE } // namespace ROCKSDB_NAMESPACE

@ -18,8 +18,7 @@
* Method: newCompactionJobInfo * Method: newCompactionJobInfo
* Signature: ()J * Signature: ()J
*/ */
jlong Java_org_rocksdb_CompactionJobInfo_newCompactionJobInfo( jlong Java_org_rocksdb_CompactionJobInfo_newCompactionJobInfo(JNIEnv*, jclass) {
JNIEnv*, jclass) {
auto* compact_job_info = new ROCKSDB_NAMESPACE::CompactionJobInfo(); auto* compact_job_info = new ROCKSDB_NAMESPACE::CompactionJobInfo();
return GET_CPLUSPLUS_POINTER(compact_job_info); return GET_CPLUSPLUS_POINTER(compact_job_info);
} }
@ -29,8 +28,8 @@ jlong Java_org_rocksdb_CompactionJobInfo_newCompactionJobInfo(
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_CompactionJobInfo_disposeInternal( void Java_org_rocksdb_CompactionJobInfo_disposeInternal(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* compact_job_info = auto* compact_job_info =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
delete compact_job_info; delete compact_job_info;
@ -41,8 +40,9 @@ void Java_org_rocksdb_CompactionJobInfo_disposeInternal(
* Method: columnFamilyName * Method: columnFamilyName
* Signature: (J)[B * Signature: (J)[B
*/ */
jbyteArray Java_org_rocksdb_CompactionJobInfo_columnFamilyName( jbyteArray Java_org_rocksdb_CompactionJobInfo_columnFamilyName(JNIEnv* env,
JNIEnv* env, jclass, jlong jhandle) { jclass,
jlong jhandle) {
auto* compact_job_info = auto* compact_job_info =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
return ROCKSDB_NAMESPACE::JniUtil::copyBytes(env, compact_job_info->cf_name); return ROCKSDB_NAMESPACE::JniUtil::copyBytes(env, compact_job_info->cf_name);
@ -53,8 +53,8 @@ jbyteArray Java_org_rocksdb_CompactionJobInfo_columnFamilyName(
* Method: status * Method: status
* Signature: (J)Lorg/rocksdb/Status; * Signature: (J)Lorg/rocksdb/Status;
*/ */
jobject Java_org_rocksdb_CompactionJobInfo_status( jobject Java_org_rocksdb_CompactionJobInfo_status(JNIEnv* env, jclass,
JNIEnv* env, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_info = auto* compact_job_info =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
return ROCKSDB_NAMESPACE::StatusJni::construct(env, compact_job_info->status); return ROCKSDB_NAMESPACE::StatusJni::construct(env, compact_job_info->status);
@ -65,8 +65,8 @@ jobject Java_org_rocksdb_CompactionJobInfo_status(
* Method: threadId * Method: threadId
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobInfo_threadId( jlong Java_org_rocksdb_CompactionJobInfo_threadId(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_info = auto* compact_job_info =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
return static_cast<jlong>(compact_job_info->thread_id); return static_cast<jlong>(compact_job_info->thread_id);
@ -77,8 +77,7 @@ jlong Java_org_rocksdb_CompactionJobInfo_threadId(
* Method: jobId * Method: jobId
* Signature: (J)I * Signature: (J)I
*/ */
jint Java_org_rocksdb_CompactionJobInfo_jobId( jint Java_org_rocksdb_CompactionJobInfo_jobId(JNIEnv*, jclass, jlong jhandle) {
JNIEnv*, jclass, jlong jhandle) {
auto* compact_job_info = auto* compact_job_info =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
return static_cast<jint>(compact_job_info->job_id); return static_cast<jint>(compact_job_info->job_id);
@ -89,8 +88,8 @@ jint Java_org_rocksdb_CompactionJobInfo_jobId(
* Method: baseInputLevel * Method: baseInputLevel
* Signature: (J)I * Signature: (J)I
*/ */
jint Java_org_rocksdb_CompactionJobInfo_baseInputLevel( jint Java_org_rocksdb_CompactionJobInfo_baseInputLevel(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_info = auto* compact_job_info =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
return static_cast<jint>(compact_job_info->base_input_level); return static_cast<jint>(compact_job_info->base_input_level);
@ -101,8 +100,8 @@ jint Java_org_rocksdb_CompactionJobInfo_baseInputLevel(
* Method: outputLevel * Method: outputLevel
* Signature: (J)I * Signature: (J)I
*/ */
jint Java_org_rocksdb_CompactionJobInfo_outputLevel( jint Java_org_rocksdb_CompactionJobInfo_outputLevel(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_info = auto* compact_job_info =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
return static_cast<jint>(compact_job_info->output_level); return static_cast<jint>(compact_job_info->output_level);
@ -113,8 +112,8 @@ jint Java_org_rocksdb_CompactionJobInfo_outputLevel(
* Method: inputFiles * Method: inputFiles
* Signature: (J)[Ljava/lang/String; * Signature: (J)[Ljava/lang/String;
*/ */
jobjectArray Java_org_rocksdb_CompactionJobInfo_inputFiles( jobjectArray Java_org_rocksdb_CompactionJobInfo_inputFiles(JNIEnv* env, jclass,
JNIEnv* env, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_info = auto* compact_job_info =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
return ROCKSDB_NAMESPACE::JniUtil::toJavaStrings( return ROCKSDB_NAMESPACE::JniUtil::toJavaStrings(
@ -126,8 +125,8 @@ jobjectArray Java_org_rocksdb_CompactionJobInfo_inputFiles(
* Method: outputFiles * Method: outputFiles
* Signature: (J)[Ljava/lang/String; * Signature: (J)[Ljava/lang/String;
*/ */
jobjectArray Java_org_rocksdb_CompactionJobInfo_outputFiles( jobjectArray Java_org_rocksdb_CompactionJobInfo_outputFiles(JNIEnv* env, jclass,
JNIEnv* env, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_info = auto* compact_job_info =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
return ROCKSDB_NAMESPACE::JniUtil::toJavaStrings( return ROCKSDB_NAMESPACE::JniUtil::toJavaStrings(
@ -139,8 +138,8 @@ jobjectArray Java_org_rocksdb_CompactionJobInfo_outputFiles(
* Method: tableProperties * Method: tableProperties
* Signature: (J)Ljava/util/Map; * Signature: (J)Ljava/util/Map;
*/ */
jobject Java_org_rocksdb_CompactionJobInfo_tableProperties( jobject Java_org_rocksdb_CompactionJobInfo_tableProperties(JNIEnv* env, jclass,
JNIEnv* env, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_info = auto* compact_job_info =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
auto* map = &compact_job_info->table_properties; auto* map = &compact_job_info->table_properties;
@ -196,8 +195,8 @@ jobject Java_org_rocksdb_CompactionJobInfo_tableProperties(
* Method: compactionReason * Method: compactionReason
* Signature: (J)B * Signature: (J)B
*/ */
jbyte Java_org_rocksdb_CompactionJobInfo_compactionReason( jbyte Java_org_rocksdb_CompactionJobInfo_compactionReason(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_info = auto* compact_job_info =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
return ROCKSDB_NAMESPACE::CompactionReasonJni::toJavaCompactionReason( return ROCKSDB_NAMESPACE::CompactionReasonJni::toJavaCompactionReason(
@ -209,8 +208,8 @@ jbyte Java_org_rocksdb_CompactionJobInfo_compactionReason(
* Method: compression * Method: compression
* Signature: (J)B * Signature: (J)B
*/ */
jbyte Java_org_rocksdb_CompactionJobInfo_compression( jbyte Java_org_rocksdb_CompactionJobInfo_compression(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_info = auto* compact_job_info =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
return ROCKSDB_NAMESPACE::CompressionTypeJni::toJavaCompressionType( return ROCKSDB_NAMESPACE::CompressionTypeJni::toJavaCompressionType(
@ -222,8 +221,7 @@ jbyte Java_org_rocksdb_CompactionJobInfo_compression(
* Method: stats * Method: stats
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobInfo_stats( jlong Java_org_rocksdb_CompactionJobInfo_stats(JNIEnv*, jclass, jlong jhandle) {
JNIEnv *, jclass, jlong jhandle) {
auto* compact_job_info = auto* compact_job_info =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(jhandle);
auto* stats = new ROCKSDB_NAMESPACE::CompactionJobStats(); auto* stats = new ROCKSDB_NAMESPACE::CompactionJobStats();

@ -19,8 +19,8 @@
* Method: newCompactionJobStats * Method: newCompactionJobStats
* Signature: ()J * Signature: ()J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_newCompactionJobStats( jlong Java_org_rocksdb_CompactionJobStats_newCompactionJobStats(JNIEnv*,
JNIEnv*, jclass) { jclass) {
auto* compact_job_stats = new ROCKSDB_NAMESPACE::CompactionJobStats(); auto* compact_job_stats = new ROCKSDB_NAMESPACE::CompactionJobStats();
return GET_CPLUSPLUS_POINTER(compact_job_stats); return GET_CPLUSPLUS_POINTER(compact_job_stats);
} }
@ -30,8 +30,8 @@ jlong Java_org_rocksdb_CompactionJobStats_newCompactionJobStats(
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_CompactionJobStats_disposeInternal( void Java_org_rocksdb_CompactionJobStats_disposeInternal(JNIEnv*, jobject,
JNIEnv *, jobject, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
delete compact_job_stats; delete compact_job_stats;
@ -42,8 +42,7 @@ void Java_org_rocksdb_CompactionJobStats_disposeInternal(
* Method: reset * Method: reset
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_CompactionJobStats_reset( void Java_org_rocksdb_CompactionJobStats_reset(JNIEnv*, jclass, jlong jhandle) {
JNIEnv*, jclass, jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
compact_job_stats->Reset(); compact_job_stats->Reset();
@ -54,8 +53,8 @@ void Java_org_rocksdb_CompactionJobStats_reset(
* Method: add * Method: add
* Signature: (JJ)V * Signature: (JJ)V
*/ */
void Java_org_rocksdb_CompactionJobStats_add( void Java_org_rocksdb_CompactionJobStats_add(JNIEnv*, jclass, jlong jhandle,
JNIEnv*, jclass, jlong jhandle, jlong jother_handle) { jlong jother_handle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
auto* other_compact_job_stats = auto* other_compact_job_stats =
@ -68,8 +67,8 @@ void Java_org_rocksdb_CompactionJobStats_add(
* Method: elapsedMicros * Method: elapsedMicros
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_elapsedMicros( jlong Java_org_rocksdb_CompactionJobStats_elapsedMicros(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>(compact_job_stats->elapsed_micros); return static_cast<jlong>(compact_job_stats->elapsed_micros);
@ -80,8 +79,8 @@ jlong Java_org_rocksdb_CompactionJobStats_elapsedMicros(
* Method: numInputRecords * Method: numInputRecords
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_numInputRecords( jlong Java_org_rocksdb_CompactionJobStats_numInputRecords(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>(compact_job_stats->num_input_records); return static_cast<jlong>(compact_job_stats->num_input_records);
@ -92,8 +91,8 @@ jlong Java_org_rocksdb_CompactionJobStats_numInputRecords(
* Method: numInputFiles * Method: numInputFiles
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_numInputFiles( jlong Java_org_rocksdb_CompactionJobStats_numInputFiles(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>(compact_job_stats->num_input_files); return static_cast<jlong>(compact_job_stats->num_input_files);
@ -108,8 +107,7 @@ jlong Java_org_rocksdb_CompactionJobStats_numInputFilesAtOutputLevel(
JNIEnv*, jclass, jlong jhandle) { JNIEnv*, jclass, jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->num_input_files_at_output_level);
compact_job_stats->num_input_files_at_output_level);
} }
/* /*
@ -117,12 +115,11 @@ jlong Java_org_rocksdb_CompactionJobStats_numInputFilesAtOutputLevel(
* Method: numOutputRecords * Method: numOutputRecords
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_numOutputRecords( jlong Java_org_rocksdb_CompactionJobStats_numOutputRecords(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->num_output_records);
compact_job_stats->num_output_records);
} }
/* /*
@ -130,12 +127,11 @@ jlong Java_org_rocksdb_CompactionJobStats_numOutputRecords(
* Method: numOutputFiles * Method: numOutputFiles
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_numOutputFiles( jlong Java_org_rocksdb_CompactionJobStats_numOutputFiles(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->num_output_files);
compact_job_stats->num_output_files);
} }
/* /*
@ -143,8 +139,8 @@ jlong Java_org_rocksdb_CompactionJobStats_numOutputFiles(
* Method: isManualCompaction * Method: isManualCompaction
* Signature: (J)Z * Signature: (J)Z
*/ */
jboolean Java_org_rocksdb_CompactionJobStats_isManualCompaction( jboolean Java_org_rocksdb_CompactionJobStats_isManualCompaction(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
if (compact_job_stats->is_manual_compaction) { if (compact_job_stats->is_manual_compaction) {
@ -159,12 +155,11 @@ jboolean Java_org_rocksdb_CompactionJobStats_isManualCompaction(
* Method: totalInputBytes * Method: totalInputBytes
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_totalInputBytes( jlong Java_org_rocksdb_CompactionJobStats_totalInputBytes(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->total_input_bytes);
compact_job_stats->total_input_bytes);
} }
/* /*
@ -172,12 +167,11 @@ jlong Java_org_rocksdb_CompactionJobStats_totalInputBytes(
* Method: totalOutputBytes * Method: totalOutputBytes
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_totalOutputBytes( jlong Java_org_rocksdb_CompactionJobStats_totalOutputBytes(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->total_output_bytes);
compact_job_stats->total_output_bytes);
} }
/* /*
@ -185,12 +179,11 @@ jlong Java_org_rocksdb_CompactionJobStats_totalOutputBytes(
* Method: numRecordsReplaced * Method: numRecordsReplaced
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_numRecordsReplaced( jlong Java_org_rocksdb_CompactionJobStats_numRecordsReplaced(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->num_records_replaced);
compact_job_stats->num_records_replaced);
} }
/* /*
@ -198,12 +191,11 @@ jlong Java_org_rocksdb_CompactionJobStats_numRecordsReplaced(
* Method: totalInputRawKeyBytes * Method: totalInputRawKeyBytes
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_totalInputRawKeyBytes( jlong Java_org_rocksdb_CompactionJobStats_totalInputRawKeyBytes(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->total_input_raw_key_bytes);
compact_job_stats->total_input_raw_key_bytes);
} }
/* /*
@ -215,8 +207,7 @@ jlong Java_org_rocksdb_CompactionJobStats_totalInputRawValueBytes(
JNIEnv*, jclass, jlong jhandle) { JNIEnv*, jclass, jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->total_input_raw_value_bytes);
compact_job_stats->total_input_raw_value_bytes);
} }
/* /*
@ -228,8 +219,7 @@ jlong Java_org_rocksdb_CompactionJobStats_numInputDeletionRecords(
JNIEnv*, jclass, jlong jhandle) { JNIEnv*, jclass, jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->num_input_deletion_records);
compact_job_stats->num_input_deletion_records);
} }
/* /*
@ -241,8 +231,7 @@ jlong Java_org_rocksdb_CompactionJobStats_numExpiredDeletionRecords(
JNIEnv*, jclass, jlong jhandle) { JNIEnv*, jclass, jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->num_expired_deletion_records);
compact_job_stats->num_expired_deletion_records);
} }
/* /*
@ -250,12 +239,11 @@ jlong Java_org_rocksdb_CompactionJobStats_numExpiredDeletionRecords(
* Method: numCorruptKeys * Method: numCorruptKeys
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_numCorruptKeys( jlong Java_org_rocksdb_CompactionJobStats_numCorruptKeys(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->num_corrupt_keys);
compact_job_stats->num_corrupt_keys);
} }
/* /*
@ -263,12 +251,11 @@ jlong Java_org_rocksdb_CompactionJobStats_numCorruptKeys(
* Method: fileWriteNanos * Method: fileWriteNanos
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_fileWriteNanos( jlong Java_org_rocksdb_CompactionJobStats_fileWriteNanos(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->file_write_nanos);
compact_job_stats->file_write_nanos);
} }
/* /*
@ -276,12 +263,11 @@ jlong Java_org_rocksdb_CompactionJobStats_fileWriteNanos(
* Method: fileRangeSyncNanos * Method: fileRangeSyncNanos
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_fileRangeSyncNanos( jlong Java_org_rocksdb_CompactionJobStats_fileRangeSyncNanos(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->file_range_sync_nanos);
compact_job_stats->file_range_sync_nanos);
} }
/* /*
@ -289,12 +275,11 @@ jlong Java_org_rocksdb_CompactionJobStats_fileRangeSyncNanos(
* Method: fileFsyncNanos * Method: fileFsyncNanos
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_fileFsyncNanos( jlong Java_org_rocksdb_CompactionJobStats_fileFsyncNanos(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->file_fsync_nanos);
compact_job_stats->file_fsync_nanos);
} }
/* /*
@ -302,12 +287,11 @@ jlong Java_org_rocksdb_CompactionJobStats_fileFsyncNanos(
* Method: filePrepareWriteNanos * Method: filePrepareWriteNanos
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_filePrepareWriteNanos( jlong Java_org_rocksdb_CompactionJobStats_filePrepareWriteNanos(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->file_prepare_write_nanos);
compact_job_stats->file_prepare_write_nanos);
} }
/* /*
@ -341,12 +325,11 @@ jbyteArray Java_org_rocksdb_CompactionJobStats_largestOutputKeyPrefix(
* Method: numSingleDelFallthru * Method: numSingleDelFallthru
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_numSingleDelFallthru( jlong Java_org_rocksdb_CompactionJobStats_numSingleDelFallthru(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->num_single_del_fallthru);
compact_job_stats->num_single_del_fallthru);
} }
/* /*
@ -354,10 +337,9 @@ jlong Java_org_rocksdb_CompactionJobStats_numSingleDelFallthru(
* Method: numSingleDelMismatch * Method: numSingleDelMismatch
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionJobStats_numSingleDelMismatch( jlong Java_org_rocksdb_CompactionJobStats_numSingleDelMismatch(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_job_stats = auto* compact_job_stats =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobStats*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_job_stats->num_single_del_mismatch);
compact_job_stats->num_single_del_mismatch);
} }

@ -18,8 +18,7 @@
* Method: newCompactionOptions * Method: newCompactionOptions
* Signature: ()J * Signature: ()J
*/ */
jlong Java_org_rocksdb_CompactionOptions_newCompactionOptions( jlong Java_org_rocksdb_CompactionOptions_newCompactionOptions(JNIEnv*, jclass) {
JNIEnv*, jclass) {
auto* compact_opts = new ROCKSDB_NAMESPACE::CompactionOptions(); auto* compact_opts = new ROCKSDB_NAMESPACE::CompactionOptions();
return GET_CPLUSPLUS_POINTER(compact_opts); return GET_CPLUSPLUS_POINTER(compact_opts);
} }
@ -29,8 +28,8 @@ jlong Java_org_rocksdb_CompactionOptions_newCompactionOptions(
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_CompactionOptions_disposeInternal( void Java_org_rocksdb_CompactionOptions_disposeInternal(JNIEnv*, jobject,
JNIEnv *, jobject, jlong jhandle) { jlong jhandle) {
auto* compact_opts = auto* compact_opts =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle);
delete compact_opts; delete compact_opts;
@ -41,8 +40,8 @@ void Java_org_rocksdb_CompactionOptions_disposeInternal(
* Method: compression * Method: compression
* Signature: (J)B * Signature: (J)B
*/ */
jbyte Java_org_rocksdb_CompactionOptions_compression( jbyte Java_org_rocksdb_CompactionOptions_compression(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_opts = auto* compact_opts =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle);
return ROCKSDB_NAMESPACE::CompressionTypeJni::toJavaCompressionType( return ROCKSDB_NAMESPACE::CompressionTypeJni::toJavaCompressionType(
@ -68,12 +67,11 @@ void Java_org_rocksdb_CompactionOptions_setCompression(
* Method: outputFileSizeLimit * Method: outputFileSizeLimit
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionOptions_outputFileSizeLimit( jlong Java_org_rocksdb_CompactionOptions_outputFileSizeLimit(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_opts = auto* compact_opts =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle);
return static_cast<jlong>( return static_cast<jlong>(compact_opts->output_file_size_limit);
compact_opts->output_file_size_limit);
} }
/* /*
@ -94,12 +92,11 @@ void Java_org_rocksdb_CompactionOptions_setOutputFileSizeLimit(
* Method: maxSubcompactions * Method: maxSubcompactions
* Signature: (J)I * Signature: (J)I
*/ */
jint Java_org_rocksdb_CompactionOptions_maxSubcompactions( jint Java_org_rocksdb_CompactionOptions_maxSubcompactions(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jhandle) { jlong jhandle) {
auto* compact_opts = auto* compact_opts =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle);
return static_cast<jint>( return static_cast<jint>(compact_opts->max_subcompactions);
compact_opts->max_subcompactions);
} }
/* /*
@ -111,6 +108,5 @@ void Java_org_rocksdb_CompactionOptions_setMaxSubcompactions(
JNIEnv*, jclass, jlong jhandle, jint jmax_subcompactions) { JNIEnv*, jclass, jlong jhandle, jint jmax_subcompactions) {
auto* compact_opts = auto* compact_opts =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(jhandle);
compact_opts->max_subcompactions = compact_opts->max_subcompactions = static_cast<uint32_t>(jmax_subcompactions);
static_cast<uint32_t>(jmax_subcompactions);
} }

@ -17,8 +17,8 @@
* Method: newCompactionOptionsFIFO * Method: newCompactionOptionsFIFO
* Signature: ()J * Signature: ()J
*/ */
jlong Java_org_rocksdb_CompactionOptionsFIFO_newCompactionOptionsFIFO( jlong Java_org_rocksdb_CompactionOptionsFIFO_newCompactionOptionsFIFO(JNIEnv*,
JNIEnv*, jclass) { jclass) {
const auto* opt = new ROCKSDB_NAMESPACE::CompactionOptionsFIFO(); const auto* opt = new ROCKSDB_NAMESPACE::CompactionOptionsFIFO();
return GET_CPLUSPLUS_POINTER(opt); return GET_CPLUSPLUS_POINTER(opt);
} }
@ -40,8 +40,8 @@ void Java_org_rocksdb_CompactionOptionsFIFO_setMaxTableFilesSize(
* Method: maxTableFilesSize * Method: maxTableFilesSize
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_CompactionOptionsFIFO_maxTableFilesSize( jlong Java_org_rocksdb_CompactionOptionsFIFO_maxTableFilesSize(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* opt = auto* opt =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptionsFIFO*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptionsFIFO*>(jhandle);
return static_cast<jlong>(opt->max_table_files_size); return static_cast<jlong>(opt->max_table_files_size);
@ -64,8 +64,9 @@ void Java_org_rocksdb_CompactionOptionsFIFO_setAllowCompaction(
* Method: allowCompaction * Method: allowCompaction
* Signature: (J)Z * Signature: (J)Z
*/ */
jboolean Java_org_rocksdb_CompactionOptionsFIFO_allowCompaction( jboolean Java_org_rocksdb_CompactionOptionsFIFO_allowCompaction(JNIEnv*,
JNIEnv*, jobject, jlong jhandle) { jobject,
jlong jhandle) {
auto* opt = auto* opt =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptionsFIFO*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptionsFIFO*>(jhandle);
return static_cast<jboolean>(opt->allow_compaction); return static_cast<jboolean>(opt->allow_compaction);
@ -76,7 +77,7 @@ jboolean Java_org_rocksdb_CompactionOptionsFIFO_allowCompaction(
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_CompactionOptionsFIFO_disposeInternal( void Java_org_rocksdb_CompactionOptionsFIFO_disposeInternal(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
delete reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptionsFIFO*>(jhandle); delete reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptionsFIFO*>(jhandle);
} }

@ -41,8 +41,8 @@ void Java_org_rocksdb_CompactionOptionsUniversal_setSizeRatio(
* Method: sizeRatio * Method: sizeRatio
* Signature: (J)I * Signature: (J)I
*/ */
jint Java_org_rocksdb_CompactionOptionsUniversal_sizeRatio( jint Java_org_rocksdb_CompactionOptionsUniversal_sizeRatio(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* opt = auto* opt =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptionsUniversal*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptionsUniversal*>(jhandle);
return static_cast<jint>(opt->size_ratio); return static_cast<jint>(opt->size_ratio);
@ -65,8 +65,8 @@ void Java_org_rocksdb_CompactionOptionsUniversal_setMinMergeWidth(
* Method: minMergeWidth * Method: minMergeWidth
* Signature: (J)I * Signature: (J)I
*/ */
jint Java_org_rocksdb_CompactionOptionsUniversal_minMergeWidth( jint Java_org_rocksdb_CompactionOptionsUniversal_minMergeWidth(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* opt = auto* opt =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptionsUniversal*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptionsUniversal*>(jhandle);
return static_cast<jint>(opt->min_merge_width); return static_cast<jint>(opt->min_merge_width);
@ -89,8 +89,8 @@ void Java_org_rocksdb_CompactionOptionsUniversal_setMaxMergeWidth(
* Method: maxMergeWidth * Method: maxMergeWidth
* Signature: (J)I * Signature: (J)I
*/ */
jint Java_org_rocksdb_CompactionOptionsUniversal_maxMergeWidth( jint Java_org_rocksdb_CompactionOptionsUniversal_maxMergeWidth(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* opt = auto* opt =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptionsUniversal*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptionsUniversal*>(jhandle);
return static_cast<jint>(opt->max_merge_width); return static_cast<jint>(opt->max_merge_width);
@ -127,8 +127,7 @@ jint Java_org_rocksdb_CompactionOptionsUniversal_maxSizeAmplificationPercent(
* Signature: (JI)V * Signature: (JI)V
*/ */
void Java_org_rocksdb_CompactionOptionsUniversal_setCompressionSizePercent( void Java_org_rocksdb_CompactionOptionsUniversal_setCompressionSizePercent(
JNIEnv*, jobject, jlong jhandle, JNIEnv*, jobject, jlong jhandle, jint jcompression_size_percent) {
jint jcompression_size_percent) {
auto* opt = auto* opt =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptionsUniversal*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptionsUniversal*>(jhandle);
opt->compression_size_percent = opt->compression_size_percent =
@ -166,8 +165,8 @@ void Java_org_rocksdb_CompactionOptionsUniversal_setStopStyle(
* Method: stopStyle * Method: stopStyle
* Signature: (J)B * Signature: (J)B
*/ */
jbyte Java_org_rocksdb_CompactionOptionsUniversal_stopStyle( jbyte Java_org_rocksdb_CompactionOptionsUniversal_stopStyle(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* opt = auto* opt =
reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptionsUniversal*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptionsUniversal*>(jhandle);
return ROCKSDB_NAMESPACE::CompactionStopStyleJni::toJavaCompactionStopStyle( return ROCKSDB_NAMESPACE::CompactionStopStyleJni::toJavaCompactionStopStyle(

@ -39,8 +39,9 @@ jlong Java_org_rocksdb_AbstractComparator_createNewComparator(
* Method: usingDirectBuffers * Method: usingDirectBuffers
* Signature: (J)Z * Signature: (J)Z
*/ */
jboolean Java_org_rocksdb_AbstractComparator_usingDirectBuffers( jboolean Java_org_rocksdb_AbstractComparator_usingDirectBuffers(JNIEnv*,
JNIEnv*, jobject, jlong jhandle) { jobject,
jlong jhandle) {
auto* c = auto* c =
reinterpret_cast<ROCKSDB_NAMESPACE::ComparatorJniCallback*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::ComparatorJniCallback*>(jhandle);
return static_cast<jboolean>(c->m_options->direct_buffer); return static_cast<jboolean>(c->m_options->direct_buffer);

@ -7,18 +7,18 @@
// ROCKSDB_NAMESPACE::Comparator. // ROCKSDB_NAMESPACE::Comparator.
#include "rocksjni/comparatorjnicallback.h" #include "rocksjni/comparatorjnicallback.h"
#include "rocksjni/portal.h" #include "rocksjni/portal.h"
namespace ROCKSDB_NAMESPACE { namespace ROCKSDB_NAMESPACE {
ComparatorJniCallback::ComparatorJniCallback( ComparatorJniCallback::ComparatorJniCallback(
JNIEnv* env, jobject jcomparator, JNIEnv* env, jobject jcomparator,
const ComparatorJniCallbackOptions* options) const ComparatorJniCallbackOptions* options)
: JniCallback(env, jcomparator), : JniCallback(env, jcomparator), m_options(options) {
m_options(options) { // cache the AbstractComparatorJniBridge class as we will reuse it many times
// for each callback
// cache the AbstractComparatorJniBridge class as we will reuse it many times for each callback m_abstract_comparator_jni_bridge_clazz = static_cast<jclass>(
m_abstract_comparator_jni_bridge_clazz = env->NewGlobalRef(AbstractComparatorJniBridge::getJClass(env)));
static_cast<jclass>(env->NewGlobalRef(AbstractComparatorJniBridge::getJClass(env)));
// Note: The name of a Comparator will not change during it's lifetime, // Note: The name of a Comparator will not change during it's lifetime,
// so we cache it in a global var // so we cache it in a global var
@ -34,7 +34,7 @@ ComparatorJniCallback::ComparatorJniCallback(
} }
jboolean has_exception = JNI_FALSE; jboolean has_exception = JNI_FALSE;
m_name = JniUtil::copyString(env, js_name, m_name = JniUtil::copyString(env, js_name,
&has_exception); // also releases jsName &has_exception); // also releases jsName
if (has_exception == JNI_TRUE) { if (has_exception == JNI_TRUE) {
// exception thrown // exception thrown
return; return;
@ -52,16 +52,16 @@ ComparatorJniCallback::ComparatorJniCallback(
} }
m_jshortest_mid = m_jshortest_mid =
AbstractComparatorJniBridge::getFindShortestSeparatorInternalMethodId( AbstractComparatorJniBridge::getFindShortestSeparatorInternalMethodId(
env, m_abstract_comparator_jni_bridge_clazz); env, m_abstract_comparator_jni_bridge_clazz);
if (m_jshortest_mid == nullptr) { if (m_jshortest_mid == nullptr) {
// exception thrown: NoSuchMethodException or OutOfMemoryError // exception thrown: NoSuchMethodException or OutOfMemoryError
return; return;
} }
m_jshort_mid = m_jshort_mid =
AbstractComparatorJniBridge::getFindShortSuccessorInternalMethodId(env, AbstractComparatorJniBridge::getFindShortSuccessorInternalMethodId(
m_abstract_comparator_jni_bridge_clazz); env, m_abstract_comparator_jni_bridge_clazz);
if (m_jshort_mid == nullptr) { if (m_jshort_mid == nullptr) {
// exception thrown: NoSuchMethodException or OutOfMemoryError // exception thrown: NoSuchMethodException or OutOfMemoryError
return; return;
@ -69,9 +69,8 @@ ComparatorJniCallback::ComparatorJniCallback(
// do we need reusable buffers? // do we need reusable buffers?
if (m_options->max_reused_buffer_size > -1) { if (m_options->max_reused_buffer_size > -1) {
if (m_options->reused_synchronisation_type ==
if (m_options->reused_synchronisation_type ReusedSynchronisationType::THREAD_LOCAL) {
== ReusedSynchronisationType::THREAD_LOCAL) {
// buffers reused per thread // buffers reused per thread
UnrefHandler unref = [](void* ptr) { UnrefHandler unref = [](void* ptr) {
ThreadLocalBuf* tlb = reinterpret_cast<ThreadLocalBuf*>(ptr); ThreadLocalBuf* tlb = reinterpret_cast<ThreadLocalBuf*>(ptr);
@ -97,9 +96,9 @@ ComparatorJniCallback::ComparatorJniCallback(
m_jshort_buf_key = nullptr; m_jshort_buf_key = nullptr;
} else { } else {
//buffers reused and shared across threads // buffers reused and shared across threads
const bool adaptive = const bool adaptive = m_options->reused_synchronisation_type ==
m_options->reused_synchronisation_type == ReusedSynchronisationType::ADAPTIVE_MUTEX; ReusedSynchronisationType::ADAPTIVE_MUTEX;
mtx_compare = std::unique_ptr<port::Mutex>(new port::Mutex(adaptive)); mtx_compare = std::unique_ptr<port::Mutex>(new port::Mutex(adaptive));
mtx_shortest = std::unique_ptr<port::Mutex>(new port::Mutex(adaptive)); mtx_shortest = std::unique_ptr<port::Mutex>(new port::Mutex(adaptive));
mtx_short = std::unique_ptr<port::Mutex>(new port::Mutex(adaptive)); mtx_short = std::unique_ptr<port::Mutex>(new port::Mutex(adaptive));
@ -220,9 +219,7 @@ ComparatorJniCallback::~ComparatorJniCallback() {
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
} }
const char* ComparatorJniCallback::Name() const { const char* ComparatorJniCallback::Name() const { return m_name.get(); }
return m_name.get();
}
int ComparatorJniCallback::Compare(const Slice& a, const Slice& b) const { int ComparatorJniCallback::Compare(const Slice& a, const Slice& b) const {
jboolean attached_thread = JNI_FALSE; jboolean attached_thread = JNI_FALSE;
@ -236,38 +233,38 @@ int ComparatorJniCallback::Compare(const Slice& a, const Slice& b) const {
MaybeLockForReuse(mtx_compare, reuse_jbuf_a || reuse_jbuf_b); MaybeLockForReuse(mtx_compare, reuse_jbuf_a || reuse_jbuf_b);
jobject jcompare_buf_a = GetBuffer(env, a, reuse_jbuf_a, m_tl_buf_a, m_jcompare_buf_a); jobject jcompare_buf_a =
GetBuffer(env, a, reuse_jbuf_a, m_tl_buf_a, m_jcompare_buf_a);
if (jcompare_buf_a == nullptr) { if (jcompare_buf_a == nullptr) {
// exception occurred // exception occurred
MaybeUnlockForReuse(mtx_compare, reuse_jbuf_a || reuse_jbuf_b); MaybeUnlockForReuse(mtx_compare, reuse_jbuf_a || reuse_jbuf_b);
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
return 0; return 0;
} }
jobject jcompare_buf_b = GetBuffer(env, b, reuse_jbuf_b, m_tl_buf_b, m_jcompare_buf_b); jobject jcompare_buf_b =
GetBuffer(env, b, reuse_jbuf_b, m_tl_buf_b, m_jcompare_buf_b);
if (jcompare_buf_b == nullptr) { if (jcompare_buf_b == nullptr) {
// exception occurred // exception occurred
if (!reuse_jbuf_a) { if (!reuse_jbuf_a) {
DeleteBuffer(env, jcompare_buf_a); DeleteBuffer(env, jcompare_buf_a);
} }
MaybeUnlockForReuse(mtx_compare, reuse_jbuf_a || reuse_jbuf_b); MaybeUnlockForReuse(mtx_compare, reuse_jbuf_a || reuse_jbuf_b);
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
return 0; return 0;
} }
jint result = jint result = env->CallStaticIntMethod(
env->CallStaticIntMethod( m_abstract_comparator_jni_bridge_clazz, m_jcompare_mid, m_jcallback_obj,
m_abstract_comparator_jni_bridge_clazz, m_jcompare_mid, jcompare_buf_a, reuse_jbuf_a ? a.size() : -1, jcompare_buf_b,
m_jcallback_obj, reuse_jbuf_b ? b.size() : -1);
jcompare_buf_a, reuse_jbuf_a ? a.size() : -1,
jcompare_buf_b, reuse_jbuf_b ? b.size() : -1);
if (env->ExceptionCheck()) { if (env->ExceptionCheck()) {
// exception thrown from CallIntMethod // exception thrown from CallIntMethod
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
result = 0; // we could not get a result from java callback so use 0 result = 0; // we could not get a result from java callback so use 0
} }
if (!reuse_jbuf_a) { if (!reuse_jbuf_a) {
@ -284,8 +281,8 @@ int ComparatorJniCallback::Compare(const Slice& a, const Slice& b) const {
return result; return result;
} }
void ComparatorJniCallback::FindShortestSeparator( void ComparatorJniCallback::FindShortestSeparator(std::string* start,
std::string* start, const Slice& limit) const { const Slice& limit) const {
if (start == nullptr) { if (start == nullptr) {
return; return;
} }
@ -294,88 +291,90 @@ void ComparatorJniCallback::FindShortestSeparator(
JNIEnv* env = getJniEnv(&attached_thread); JNIEnv* env = getJniEnv(&attached_thread);
assert(env != nullptr); assert(env != nullptr);
const bool reuse_jbuf_start = const bool reuse_jbuf_start = static_cast<int64_t>(start->length()) <=
static_cast<int64_t>(start->length()) <= m_options->max_reused_buffer_size; m_options->max_reused_buffer_size;
const bool reuse_jbuf_limit = const bool reuse_jbuf_limit =
static_cast<int64_t>(limit.size()) <= m_options->max_reused_buffer_size; static_cast<int64_t>(limit.size()) <= m_options->max_reused_buffer_size;
MaybeLockForReuse(mtx_shortest, reuse_jbuf_start || reuse_jbuf_limit); MaybeLockForReuse(mtx_shortest, reuse_jbuf_start || reuse_jbuf_limit);
Slice sstart(start->data(), start->length()); Slice sstart(start->data(), start->length());
jobject j_start_buf = GetBuffer(env, sstart, reuse_jbuf_start, m_tl_buf_a, m_jshortest_buf_start); jobject j_start_buf = GetBuffer(env, sstart, reuse_jbuf_start, m_tl_buf_a,
m_jshortest_buf_start);
if (j_start_buf == nullptr) { if (j_start_buf == nullptr) {
// exception occurred // exception occurred
MaybeUnlockForReuse(mtx_shortest, reuse_jbuf_start || reuse_jbuf_limit); MaybeUnlockForReuse(mtx_shortest, reuse_jbuf_start || reuse_jbuf_limit);
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
return; return;
} }
jobject j_limit_buf = GetBuffer(env, limit, reuse_jbuf_limit, m_tl_buf_b, m_jshortest_buf_limit); jobject j_limit_buf = GetBuffer(env, limit, reuse_jbuf_limit, m_tl_buf_b,
m_jshortest_buf_limit);
if (j_limit_buf == nullptr) { if (j_limit_buf == nullptr) {
// exception occurred // exception occurred
if (!reuse_jbuf_start) { if (!reuse_jbuf_start) {
DeleteBuffer(env, j_start_buf); DeleteBuffer(env, j_start_buf);
} }
MaybeUnlockForReuse(mtx_shortest, reuse_jbuf_start || reuse_jbuf_limit); MaybeUnlockForReuse(mtx_shortest, reuse_jbuf_start || reuse_jbuf_limit);
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
return; return;
} }
jint jstart_len = env->CallStaticIntMethod( jint jstart_len = env->CallStaticIntMethod(
m_abstract_comparator_jni_bridge_clazz, m_jshortest_mid, m_abstract_comparator_jni_bridge_clazz, m_jshortest_mid, m_jcallback_obj,
m_jcallback_obj, j_start_buf, reuse_jbuf_start ? start->length() : -1, j_limit_buf,
j_start_buf, reuse_jbuf_start ? start->length() : -1, reuse_jbuf_limit ? limit.size() : -1);
j_limit_buf, reuse_jbuf_limit ? limit.size() : -1);
if (env->ExceptionCheck()) { if (env->ExceptionCheck()) {
// exception thrown from CallIntMethod // exception thrown from CallIntMethod
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
} else if (static_cast<size_t>(jstart_len) != start->length()) { } else if (static_cast<size_t>(jstart_len) != start->length()) {
// start buffer has changed in Java, so update `start` with the result // start buffer has changed in Java, so update `start` with the result
bool copy_from_non_direct = false; bool copy_from_non_direct = false;
if (reuse_jbuf_start) { if (reuse_jbuf_start) {
// reused a buffer // reused a buffer
if (m_options->direct_buffer) { if (m_options->direct_buffer) {
// reused direct buffer // reused direct buffer
void* start_buf = env->GetDirectBufferAddress(j_start_buf); void* start_buf = env->GetDirectBufferAddress(j_start_buf);
if (start_buf == nullptr) { if (start_buf == nullptr) {
if (!reuse_jbuf_start) { if (!reuse_jbuf_start) {
DeleteBuffer(env, j_start_buf); DeleteBuffer(env, j_start_buf);
}
if (!reuse_jbuf_limit) {
DeleteBuffer(env, j_limit_buf);
}
MaybeUnlockForReuse(mtx_shortest, reuse_jbuf_start || reuse_jbuf_limit);
ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
env, "Unable to get Direct Buffer Address");
env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread);
return;
} }
start->assign(static_cast<const char*>(start_buf), jstart_len); if (!reuse_jbuf_limit) {
DeleteBuffer(env, j_limit_buf);
} else { }
MaybeUnlockForReuse(mtx_shortest,
// reused non-direct buffer reuse_jbuf_start || reuse_jbuf_limit);
copy_from_non_direct = true; ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
env, "Unable to get Direct Buffer Address");
env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread);
return;
} }
start->assign(static_cast<const char*>(start_buf), jstart_len);
} else {
// reused non-direct buffer
copy_from_non_direct = true;
}
} else { } else {
// there was a new buffer // there was a new buffer
if (m_options->direct_buffer) { if (m_options->direct_buffer) {
// it was direct... don't forget to potentially truncate the `start` string // it was direct... don't forget to potentially truncate the `start`
start->resize(jstart_len); // string
} else { start->resize(jstart_len);
// it was non-direct } else {
copy_from_non_direct = true; // it was non-direct
} copy_from_non_direct = true;
}
} }
if (copy_from_non_direct) { if (copy_from_non_direct) {
jbyteArray jarray = ByteBufferJni::array(env, j_start_buf, jbyteArray jarray =
m_jbytebuffer_clazz); ByteBufferJni::array(env, j_start_buf, m_jbytebuffer_clazz);
if (jarray == nullptr) { if (jarray == nullptr) {
if (!reuse_jbuf_start) { if (!reuse_jbuf_start) {
DeleteBuffer(env, j_start_buf); DeleteBuffer(env, j_start_buf);
@ -389,9 +388,12 @@ void ComparatorJniCallback::FindShortestSeparator(
return; return;
} }
jboolean has_exception = JNI_FALSE; jboolean has_exception = JNI_FALSE;
JniUtil::byteString<std::string>(env, jarray, [start, jstart_len](const char* data, const size_t) { JniUtil::byteString<std::string>(
return start->assign(data, static_cast<size_t>(jstart_len)); env, jarray,
}, &has_exception); [start, jstart_len](const char* data, const size_t) {
return start->assign(data, static_cast<size_t>(jstart_len));
},
&has_exception);
env->DeleteLocalRef(jarray); env->DeleteLocalRef(jarray);
if (has_exception == JNI_TRUE) { if (has_exception == JNI_TRUE) {
if (!reuse_jbuf_start) { if (!reuse_jbuf_start) {
@ -420,8 +422,7 @@ void ComparatorJniCallback::FindShortestSeparator(
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
} }
void ComparatorJniCallback::FindShortSuccessor( void ComparatorJniCallback::FindShortSuccessor(std::string* key) const {
std::string* key) const {
if (key == nullptr) { if (key == nullptr) {
return; return;
} }
@ -436,18 +437,18 @@ void ComparatorJniCallback::FindShortSuccessor(
MaybeLockForReuse(mtx_short, reuse_jbuf_key); MaybeLockForReuse(mtx_short, reuse_jbuf_key);
Slice skey(key->data(), key->length()); Slice skey(key->data(), key->length());
jobject j_key_buf = GetBuffer(env, skey, reuse_jbuf_key, m_tl_buf_a, m_jshort_buf_key); jobject j_key_buf =
GetBuffer(env, skey, reuse_jbuf_key, m_tl_buf_a, m_jshort_buf_key);
if (j_key_buf == nullptr) { if (j_key_buf == nullptr) {
// exception occurred // exception occurred
MaybeUnlockForReuse(mtx_short, reuse_jbuf_key); MaybeUnlockForReuse(mtx_short, reuse_jbuf_key);
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
return; return;
} }
jint jkey_len = env->CallStaticIntMethod( jint jkey_len = env->CallStaticIntMethod(
m_abstract_comparator_jni_bridge_clazz, m_jshort_mid, m_abstract_comparator_jni_bridge_clazz, m_jshort_mid, m_jcallback_obj,
m_jcallback_obj,
j_key_buf, reuse_jbuf_key ? key->length() : -1); j_key_buf, reuse_jbuf_key ? key->length() : -1);
if (env->ExceptionCheck()) { if (env->ExceptionCheck()) {
@ -459,49 +460,48 @@ void ComparatorJniCallback::FindShortSuccessor(
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
return; return;
} }
if (static_cast<size_t>(jkey_len) != key->length()) { if (static_cast<size_t>(jkey_len) != key->length()) {
// key buffer has changed in Java, so update `key` with the result // key buffer has changed in Java, so update `key` with the result
bool copy_from_non_direct = false; bool copy_from_non_direct = false;
if (reuse_jbuf_key) { if (reuse_jbuf_key) {
// reused a buffer // reused a buffer
if (m_options->direct_buffer) { if (m_options->direct_buffer) {
// reused direct buffer // reused direct buffer
void* key_buf = env->GetDirectBufferAddress(j_key_buf); void* key_buf = env->GetDirectBufferAddress(j_key_buf);
if (key_buf == nullptr) { if (key_buf == nullptr) {
ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew( ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
env, "Unable to get Direct Buffer Address"); env, "Unable to get Direct Buffer Address");
if (!reuse_jbuf_key) { if (!reuse_jbuf_key) {
DeleteBuffer(env, j_key_buf); DeleteBuffer(env, j_key_buf);
}
MaybeUnlockForReuse(mtx_short, reuse_jbuf_key);
env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread);
return;
} }
key->assign(static_cast<const char*>(key_buf), jkey_len); MaybeUnlockForReuse(mtx_short, reuse_jbuf_key);
} else { env->ExceptionDescribe(); // print out exception to stderr
// reused non-direct buffer releaseJniEnv(attached_thread);
copy_from_non_direct = true; return;
} }
key->assign(static_cast<const char*>(key_buf), jkey_len);
} else {
// reused non-direct buffer
copy_from_non_direct = true;
}
} else { } else {
// there was a new buffer // there was a new buffer
if (m_options->direct_buffer) { if (m_options->direct_buffer) {
// it was direct... don't forget to potentially truncate the `key` string // it was direct... don't forget to potentially truncate the `key`
key->resize(jkey_len); // string
} else { key->resize(jkey_len);
// it was non-direct } else {
copy_from_non_direct = true; // it was non-direct
} copy_from_non_direct = true;
}
} }
if (copy_from_non_direct) { if (copy_from_non_direct) {
jbyteArray jarray = ByteBufferJni::array(env, j_key_buf, jbyteArray jarray =
m_jbytebuffer_clazz); ByteBufferJni::array(env, j_key_buf, m_jbytebuffer_clazz);
if (jarray == nullptr) { if (jarray == nullptr) {
if (!reuse_jbuf_key) { if (!reuse_jbuf_key) {
DeleteBuffer(env, j_key_buf); DeleteBuffer(env, j_key_buf);
} }
@ -511,9 +511,12 @@ void ComparatorJniCallback::FindShortSuccessor(
return; return;
} }
jboolean has_exception = JNI_FALSE; jboolean has_exception = JNI_FALSE;
JniUtil::byteString<std::string>(env, jarray, [key, jkey_len](const char* data, const size_t) { JniUtil::byteString<std::string>(
return key->assign(data, static_cast<size_t>(jkey_len)); env, jarray,
}, &has_exception); [key, jkey_len](const char* data, const size_t) {
return key->assign(data, static_cast<size_t>(jkey_len));
},
&has_exception);
env->DeleteLocalRef(jarray); env->DeleteLocalRef(jarray);
if (has_exception == JNI_TRUE) { if (has_exception == JNI_TRUE) {
if (!reuse_jbuf_key) { if (!reuse_jbuf_key) {
@ -539,8 +542,9 @@ void ComparatorJniCallback::FindShortSuccessor(
inline void ComparatorJniCallback::MaybeLockForReuse( inline void ComparatorJniCallback::MaybeLockForReuse(
const std::unique_ptr<port::Mutex>& mutex, const bool cond) const { const std::unique_ptr<port::Mutex>& mutex, const bool cond) const {
// no need to lock if using thread_local // no need to lock if using thread_local
if (m_options->reused_synchronisation_type != ReusedSynchronisationType::THREAD_LOCAL if (m_options->reused_synchronisation_type !=
&& cond) { ReusedSynchronisationType::THREAD_LOCAL &&
cond) {
mutex.get()->Lock(); mutex.get()->Lock();
} }
} }
@ -548,18 +552,20 @@ inline void ComparatorJniCallback::MaybeLockForReuse(
inline void ComparatorJniCallback::MaybeUnlockForReuse( inline void ComparatorJniCallback::MaybeUnlockForReuse(
const std::unique_ptr<port::Mutex>& mutex, const bool cond) const { const std::unique_ptr<port::Mutex>& mutex, const bool cond) const {
// no need to unlock if using thread_local // no need to unlock if using thread_local
if (m_options->reused_synchronisation_type != ReusedSynchronisationType::THREAD_LOCAL if (m_options->reused_synchronisation_type !=
&& cond) { ReusedSynchronisationType::THREAD_LOCAL &&
cond) {
mutex.get()->Unlock(); mutex.get()->Unlock();
} }
} }
jobject ComparatorJniCallback::GetBuffer(JNIEnv* env, const Slice& src, jobject ComparatorJniCallback::GetBuffer(JNIEnv* env, const Slice& src,
bool reuse_buffer, ThreadLocalPtr* tl_buf, jobject jreuse_buffer) const { bool reuse_buffer,
ThreadLocalPtr* tl_buf,
jobject jreuse_buffer) const {
if (reuse_buffer) { if (reuse_buffer) {
if (m_options->reused_synchronisation_type if (m_options->reused_synchronisation_type ==
== ReusedSynchronisationType::THREAD_LOCAL) { ReusedSynchronisationType::THREAD_LOCAL) {
// reuse thread-local bufffer // reuse thread-local bufffer
ThreadLocalBuf* tlb = reinterpret_cast<ThreadLocalBuf*>(tl_buf->Get()); ThreadLocalBuf* tlb = reinterpret_cast<ThreadLocalBuf*>(tl_buf->Get());
if (tlb == nullptr) { if (tlb == nullptr) {
@ -576,25 +582,25 @@ jobject ComparatorJniCallback::GetBuffer(JNIEnv* env, const Slice& src,
} }
return ReuseBuffer(env, src, tlb->jbuf); return ReuseBuffer(env, src, tlb->jbuf);
} else { } else {
// reuse class member buffer // reuse class member buffer
return ReuseBuffer(env, src, jreuse_buffer); return ReuseBuffer(env, src, jreuse_buffer);
} }
} else { } else {
// new buffer // new buffer
return NewBuffer(env, src); return NewBuffer(env, src);
} }
} }
jobject ComparatorJniCallback::ReuseBuffer( jobject ComparatorJniCallback::ReuseBuffer(JNIEnv* env, const Slice& src,
JNIEnv* env, const Slice& src, jobject jreuse_buffer) const { jobject jreuse_buffer) const {
// we can reuse the buffer // we can reuse the buffer
if (m_options->direct_buffer) { if (m_options->direct_buffer) {
// copy into direct buffer // copy into direct buffer
void* buf = env->GetDirectBufferAddress(jreuse_buffer); void* buf = env->GetDirectBufferAddress(jreuse_buffer);
if (buf == nullptr) { if (buf == nullptr) {
// either memory region is undefined, given object is not a direct java.nio.Buffer, or JNI access to direct buffers is not supported by this virtual machine. // either memory region is undefined, given object is not a direct
// java.nio.Buffer, or JNI access to direct buffers is not supported by
// this virtual machine.
ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew( ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
env, "Unable to get Direct Buffer Address"); env, "Unable to get Direct Buffer Address");
return nullptr; return nullptr;
@ -602,13 +608,14 @@ jobject ComparatorJniCallback::ReuseBuffer(
memcpy(buf, src.data(), src.size()); memcpy(buf, src.data(), src.size());
} else { } else {
// copy into non-direct buffer // copy into non-direct buffer
const jbyteArray jarray = ByteBufferJni::array(env, jreuse_buffer, const jbyteArray jarray =
m_jbytebuffer_clazz); ByteBufferJni::array(env, jreuse_buffer, m_jbytebuffer_clazz);
if (jarray == nullptr) { if (jarray == nullptr) {
// exception occurred // exception occurred
return nullptr; return nullptr;
} }
env->SetByteArrayRegion(jarray, 0, static_cast<jsize>(src.size()), env->SetByteArrayRegion(
jarray, 0, static_cast<jsize>(src.size()),
const_cast<jbyte*>(reinterpret_cast<const jbyte*>(src.data()))); const_cast<jbyte*>(reinterpret_cast<const jbyte*>(src.data())));
if (env->ExceptionCheck()) { if (env->ExceptionCheck()) {
// exception occurred // exception occurred
@ -622,8 +629,9 @@ jobject ComparatorJniCallback::ReuseBuffer(
jobject ComparatorJniCallback::NewBuffer(JNIEnv* env, const Slice& src) const { jobject ComparatorJniCallback::NewBuffer(JNIEnv* env, const Slice& src) const {
// we need a new buffer // we need a new buffer
jobject jbuf = ByteBufferJni::constructWith(env, m_options->direct_buffer, jobject jbuf =
src.data(), src.size(), m_jbytebuffer_clazz); ByteBufferJni::constructWith(env, m_options->direct_buffer, src.data(),
src.size(), m_jbytebuffer_clazz);
if (jbuf == nullptr) { if (jbuf == nullptr) {
// exception occurred // exception occurred
return nullptr; return nullptr;

@ -10,12 +10,14 @@
#define JAVA_ROCKSJNI_COMPARATORJNICALLBACK_H_ #define JAVA_ROCKSJNI_COMPARATORJNICALLBACK_H_
#include <jni.h> #include <jni.h>
#include <memory> #include <memory>
#include <string> #include <string>
#include "rocksjni/jnicallback.h"
#include "port/port.h"
#include "rocksdb/comparator.h" #include "rocksdb/comparator.h"
#include "rocksdb/slice.h" #include "rocksdb/slice.h"
#include "port/port.h" #include "rocksjni/jnicallback.h"
#include "util/thread_local.h" #include "util/thread_local.h"
namespace ROCKSDB_NAMESPACE { namespace ROCKSDB_NAMESPACE {
@ -41,7 +43,6 @@ enum ReusedSynchronisationType {
}; };
struct ComparatorJniCallbackOptions { struct ComparatorJniCallbackOptions {
// Set the synchronisation type used to guard the reused buffers. // Set the synchronisation type used to guard the reused buffers.
// Only used if max_reused_buffer_size > 0. // Only used if max_reused_buffer_size > 0.
// Default: ADAPTIVE_MUTEX // Default: ADAPTIVE_MUTEX
@ -83,54 +84,57 @@ struct ComparatorJniCallbackOptions {
*/ */
class ComparatorJniCallback : public JniCallback, public Comparator { class ComparatorJniCallback : public JniCallback, public Comparator {
public: public:
ComparatorJniCallback( ComparatorJniCallback(JNIEnv* env, jobject jcomparator,
JNIEnv* env, jobject jcomparator, const ComparatorJniCallbackOptions* options);
const ComparatorJniCallbackOptions* options); ~ComparatorJniCallback();
~ComparatorJniCallback(); virtual const char* Name() const;
virtual const char* Name() const; virtual int Compare(const Slice& a, const Slice& b) const;
virtual int Compare(const Slice& a, const Slice& b) const; virtual void FindShortestSeparator(std::string* start,
virtual void FindShortestSeparator( const Slice& limit) const;
std::string* start, const Slice& limit) const; virtual void FindShortSuccessor(std::string* key) const;
virtual void FindShortSuccessor(std::string* key) const; const ComparatorJniCallbackOptions* m_options;
const ComparatorJniCallbackOptions* m_options;
private: private:
struct ThreadLocalBuf { struct ThreadLocalBuf {
ThreadLocalBuf(JavaVM* _jvm, bool _direct_buffer, jobject _jbuf) : ThreadLocalBuf(JavaVM* _jvm, bool _direct_buffer, jobject _jbuf)
jvm(_jvm), direct_buffer(_direct_buffer), jbuf(_jbuf) {} : jvm(_jvm), direct_buffer(_direct_buffer), jbuf(_jbuf) {}
JavaVM* jvm; JavaVM* jvm;
bool direct_buffer; bool direct_buffer;
jobject jbuf; jobject jbuf;
}; };
inline void MaybeLockForReuse(const std::unique_ptr<port::Mutex>& mutex, inline void MaybeLockForReuse(const std::unique_ptr<port::Mutex>& mutex,
const bool cond) const; const bool cond) const;
inline void MaybeUnlockForReuse(const std::unique_ptr<port::Mutex>& mutex, inline void MaybeUnlockForReuse(const std::unique_ptr<port::Mutex>& mutex,
const bool cond) const; const bool cond) const;
jobject GetBuffer(JNIEnv* env, const Slice& src, bool reuse_buffer, jobject GetBuffer(JNIEnv* env, const Slice& src, bool reuse_buffer,
ThreadLocalPtr* tl_buf, jobject jreuse_buffer) const; ThreadLocalPtr* tl_buf, jobject jreuse_buffer) const;
jobject ReuseBuffer(JNIEnv* env, const Slice& src, jobject ReuseBuffer(JNIEnv* env, const Slice& src,
jobject jreuse_buffer) const; jobject jreuse_buffer) const;
jobject NewBuffer(JNIEnv* env, const Slice& src) const; jobject NewBuffer(JNIEnv* env, const Slice& src) const;
void DeleteBuffer(JNIEnv* env, jobject jbuffer) const; void DeleteBuffer(JNIEnv* env, jobject jbuffer) const;
// used for synchronisation in compare method // used for synchronisation in compare method
std::unique_ptr<port::Mutex> mtx_compare; std::unique_ptr<port::Mutex> mtx_compare;
// used for synchronisation in findShortestSeparator method // used for synchronisation in findShortestSeparator method
std::unique_ptr<port::Mutex> mtx_shortest; std::unique_ptr<port::Mutex> mtx_shortest;
// used for synchronisation in findShortSuccessor method // used for synchronisation in findShortSuccessor method
std::unique_ptr<port::Mutex> mtx_short; std::unique_ptr<port::Mutex> mtx_short;
std::unique_ptr<const char[]> m_name; std::unique_ptr<const char[]> m_name;
jclass m_abstract_comparator_jni_bridge_clazz; // TODO(AR) could we make this static somehow? jclass m_abstract_comparator_jni_bridge_clazz; // TODO(AR) could we make this
jclass m_jbytebuffer_clazz; // TODO(AR) we could cache this globally for the entire VM if we switch more APIs to use ByteBuffer // TODO(AR) could we make this static somehow? // static somehow?
jmethodID m_jcompare_mid; // TODO(AR) could we make this static somehow? jclass m_jbytebuffer_clazz; // TODO(AR) we could cache this globally for the
jmethodID m_jshortest_mid; // TODO(AR) could we make this static somehow? // entire VM if we switch more APIs to use
jmethodID m_jshort_mid; // TODO(AR) could we make this static somehow? // ByteBuffer // TODO(AR) could we make this
jobject m_jcompare_buf_a; // static somehow?
jobject m_jcompare_buf_b; jmethodID m_jcompare_mid; // TODO(AR) could we make this static somehow?
jobject m_jshortest_buf_start; jmethodID m_jshortest_mid; // TODO(AR) could we make this static somehow?
jobject m_jshortest_buf_limit; jmethodID m_jshort_mid; // TODO(AR) could we make this static somehow?
jobject m_jshort_buf_key; jobject m_jcompare_buf_a;
ThreadLocalPtr* m_tl_buf_a; jobject m_jcompare_buf_b;
ThreadLocalPtr* m_tl_buf_b; jobject m_jshortest_buf_start;
jobject m_jshortest_buf_limit;
jobject m_jshort_buf_key;
ThreadLocalPtr* m_tl_buf_a;
ThreadLocalPtr* m_tl_buf_b;
}; };
} // namespace ROCKSDB_NAMESPACE } // namespace ROCKSDB_NAMESPACE

@ -17,8 +17,8 @@
* Method: newCompressionOptions * Method: newCompressionOptions
* Signature: ()J * Signature: ()J
*/ */
jlong Java_org_rocksdb_CompressionOptions_newCompressionOptions( jlong Java_org_rocksdb_CompressionOptions_newCompressionOptions(JNIEnv*,
JNIEnv*, jclass) { jclass) {
const auto* opt = new ROCKSDB_NAMESPACE::CompressionOptions(); const auto* opt = new ROCKSDB_NAMESPACE::CompressionOptions();
return GET_CPLUSPLUS_POINTER(opt); return GET_CPLUSPLUS_POINTER(opt);
} }
@ -28,8 +28,9 @@ jlong Java_org_rocksdb_CompressionOptions_newCompressionOptions(
* Method: setWindowBits * Method: setWindowBits
* Signature: (JI)V * Signature: (JI)V
*/ */
void Java_org_rocksdb_CompressionOptions_setWindowBits( void Java_org_rocksdb_CompressionOptions_setWindowBits(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle, jint jwindow_bits) { jlong jhandle,
jint jwindow_bits) {
auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle); auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle);
opt->window_bits = static_cast<int>(jwindow_bits); opt->window_bits = static_cast<int>(jwindow_bits);
} }
@ -39,8 +40,8 @@ void Java_org_rocksdb_CompressionOptions_setWindowBits(
* Method: windowBits * Method: windowBits
* Signature: (J)I * Signature: (J)I
*/ */
jint Java_org_rocksdb_CompressionOptions_windowBits( jint Java_org_rocksdb_CompressionOptions_windowBits(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle); auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle);
return static_cast<jint>(opt->window_bits); return static_cast<jint>(opt->window_bits);
} }
@ -50,8 +51,8 @@ jint Java_org_rocksdb_CompressionOptions_windowBits(
* Method: setLevel * Method: setLevel
* Signature: (JI)V * Signature: (JI)V
*/ */
void Java_org_rocksdb_CompressionOptions_setLevel( void Java_org_rocksdb_CompressionOptions_setLevel(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle, jint jlevel) { jlong jhandle, jint jlevel) {
auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle); auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle);
opt->level = static_cast<int>(jlevel); opt->level = static_cast<int>(jlevel);
} }
@ -61,8 +62,8 @@ void Java_org_rocksdb_CompressionOptions_setLevel(
* Method: level * Method: level
* Signature: (J)I * Signature: (J)I
*/ */
jint Java_org_rocksdb_CompressionOptions_level( jint Java_org_rocksdb_CompressionOptions_level(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle); auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle);
return static_cast<jint>(opt->level); return static_cast<jint>(opt->level);
} }
@ -72,8 +73,9 @@ jint Java_org_rocksdb_CompressionOptions_level(
* Method: setStrategy * Method: setStrategy
* Signature: (JI)V * Signature: (JI)V
*/ */
void Java_org_rocksdb_CompressionOptions_setStrategy( void Java_org_rocksdb_CompressionOptions_setStrategy(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle, jint jstrategy) { jlong jhandle,
jint jstrategy) {
auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle); auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle);
opt->strategy = static_cast<int>(jstrategy); opt->strategy = static_cast<int>(jstrategy);
} }
@ -83,8 +85,8 @@ void Java_org_rocksdb_CompressionOptions_setStrategy(
* Method: strategy * Method: strategy
* Signature: (J)I * Signature: (J)I
*/ */
jint Java_org_rocksdb_CompressionOptions_strategy( jint Java_org_rocksdb_CompressionOptions_strategy(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle); auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle);
return static_cast<jint>(opt->strategy); return static_cast<jint>(opt->strategy);
} }
@ -94,8 +96,9 @@ jint Java_org_rocksdb_CompressionOptions_strategy(
* Method: setMaxDictBytes * Method: setMaxDictBytes
* Signature: (JI)V * Signature: (JI)V
*/ */
void Java_org_rocksdb_CompressionOptions_setMaxDictBytes( void Java_org_rocksdb_CompressionOptions_setMaxDictBytes(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle, jint jmax_dict_bytes) { jlong jhandle,
jint jmax_dict_bytes) {
auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle); auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle);
opt->max_dict_bytes = static_cast<uint32_t>(jmax_dict_bytes); opt->max_dict_bytes = static_cast<uint32_t>(jmax_dict_bytes);
} }
@ -105,8 +108,8 @@ void Java_org_rocksdb_CompressionOptions_setMaxDictBytes(
* Method: maxDictBytes * Method: maxDictBytes
* Signature: (J)I * Signature: (J)I
*/ */
jint Java_org_rocksdb_CompressionOptions_maxDictBytes( jint Java_org_rocksdb_CompressionOptions_maxDictBytes(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle); auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle);
return static_cast<jint>(opt->max_dict_bytes); return static_cast<jint>(opt->max_dict_bytes);
} }
@ -127,8 +130,8 @@ void Java_org_rocksdb_CompressionOptions_setZstdMaxTrainBytes(
* Method: zstdMaxTrainBytes * Method: zstdMaxTrainBytes
* Signature: (J)I * Signature: (J)I
*/ */
jint Java_org_rocksdb_CompressionOptions_zstdMaxTrainBytes( jint Java_org_rocksdb_CompressionOptions_zstdMaxTrainBytes(JNIEnv*, jobject,
JNIEnv *, jobject, jlong jhandle) { jlong jhandle) {
auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle); auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle);
return static_cast<jint>(opt->zstd_max_train_bytes); return static_cast<jint>(opt->zstd_max_train_bytes);
} }
@ -183,8 +186,9 @@ jboolean Java_org_rocksdb_CompressionOptions_useZstdDictTrainer(JNIEnv*,
* Method: setEnabled * Method: setEnabled
* Signature: (JZ)V * Signature: (JZ)V
*/ */
void Java_org_rocksdb_CompressionOptions_setEnabled( void Java_org_rocksdb_CompressionOptions_setEnabled(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle, jboolean jenabled) { jlong jhandle,
jboolean jenabled) {
auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle); auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle);
opt->enabled = jenabled == JNI_TRUE; opt->enabled = jenabled == JNI_TRUE;
} }
@ -194,8 +198,8 @@ void Java_org_rocksdb_CompressionOptions_setEnabled(
* Method: enabled * Method: enabled
* Signature: (J)Z * Signature: (J)Z
*/ */
jboolean Java_org_rocksdb_CompressionOptions_enabled( jboolean Java_org_rocksdb_CompressionOptions_enabled(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle); auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle);
return static_cast<bool>(opt->enabled); return static_cast<bool>(opt->enabled);
} }
@ -204,7 +208,7 @@ jboolean Java_org_rocksdb_CompressionOptions_enabled(
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_CompressionOptions_disposeInternal( void Java_org_rocksdb_CompressionOptions_disposeInternal(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
delete reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle); delete reinterpret_cast<ROCKSDB_NAMESPACE::CompressionOptions*>(jhandle);
} }

@ -85,5 +85,6 @@ void Java_org_rocksdb_ConfigOptions_setInputStringsEscaped(JNIEnv *, jclass,
void Java_org_rocksdb_ConfigOptions_setSanityLevel(JNIEnv *, jclass, void Java_org_rocksdb_ConfigOptions_setSanityLevel(JNIEnv *, jclass,
jlong handle, jbyte level) { jlong handle, jbyte level) {
auto *cfg_opt = reinterpret_cast<ROCKSDB_NAMESPACE::ConfigOptions *>(handle); auto *cfg_opt = reinterpret_cast<ROCKSDB_NAMESPACE::ConfigOptions *>(handle);
cfg_opt->sanity_level = ROCKSDB_NAMESPACE::SanityLevelJni::toCppSanityLevel(level); cfg_opt->sanity_level =
ROCKSDB_NAMESPACE::SanityLevelJni::toCppSanityLevel(level);
} }

@ -24,8 +24,7 @@
* Method: getDefaultEnvInternal * Method: getDefaultEnvInternal
* Signature: ()J * Signature: ()J
*/ */
jlong Java_org_rocksdb_Env_getDefaultEnvInternal( jlong Java_org_rocksdb_Env_getDefaultEnvInternal(JNIEnv*, jclass) {
JNIEnv*, jclass) {
return GET_CPLUSPLUS_POINTER(ROCKSDB_NAMESPACE::Env::Default()); return GET_CPLUSPLUS_POINTER(ROCKSDB_NAMESPACE::Env::Default());
} }
@ -34,8 +33,8 @@ jlong Java_org_rocksdb_Env_getDefaultEnvInternal(
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_RocksEnv_disposeInternal( void Java_org_rocksdb_RocksEnv_disposeInternal(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* e = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle); auto* e = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle);
assert(e != nullptr); assert(e != nullptr);
delete e; delete e;
@ -46,8 +45,9 @@ void Java_org_rocksdb_RocksEnv_disposeInternal(
* Method: setBackgroundThreads * Method: setBackgroundThreads
* Signature: (JIB)V * Signature: (JIB)V
*/ */
void Java_org_rocksdb_Env_setBackgroundThreads( void Java_org_rocksdb_Env_setBackgroundThreads(JNIEnv*, jobject, jlong jhandle,
JNIEnv*, jobject, jlong jhandle, jint jnum, jbyte jpriority_value) { jint jnum,
jbyte jpriority_value) {
auto* rocks_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle); auto* rocks_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle);
rocks_env->SetBackgroundThreads( rocks_env->SetBackgroundThreads(
static_cast<int>(jnum), static_cast<int>(jnum),
@ -59,8 +59,8 @@ void Java_org_rocksdb_Env_setBackgroundThreads(
* Method: getBackgroundThreads * Method: getBackgroundThreads
* Signature: (JB)I * Signature: (JB)I
*/ */
jint Java_org_rocksdb_Env_getBackgroundThreads( jint Java_org_rocksdb_Env_getBackgroundThreads(JNIEnv*, jobject, jlong jhandle,
JNIEnv*, jobject, jlong jhandle, jbyte jpriority_value) { jbyte jpriority_value) {
auto* rocks_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle); auto* rocks_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle);
const int num = rocks_env->GetBackgroundThreads( const int num = rocks_env->GetBackgroundThreads(
ROCKSDB_NAMESPACE::PriorityJni::toCppPriority(jpriority_value)); ROCKSDB_NAMESPACE::PriorityJni::toCppPriority(jpriority_value));
@ -72,8 +72,8 @@ jint Java_org_rocksdb_Env_getBackgroundThreads(
* Method: getThreadPoolQueueLen * Method: getThreadPoolQueueLen
* Signature: (JB)I * Signature: (JB)I
*/ */
jint Java_org_rocksdb_Env_getThreadPoolQueueLen( jint Java_org_rocksdb_Env_getThreadPoolQueueLen(JNIEnv*, jobject, jlong jhandle,
JNIEnv*, jobject, jlong jhandle, jbyte jpriority_value) { jbyte jpriority_value) {
auto* rocks_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle); auto* rocks_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle);
const int queue_len = rocks_env->GetThreadPoolQueueLen( const int queue_len = rocks_env->GetThreadPoolQueueLen(
ROCKSDB_NAMESPACE::PriorityJni::toCppPriority(jpriority_value)); ROCKSDB_NAMESPACE::PriorityJni::toCppPriority(jpriority_value));
@ -85,8 +85,9 @@ jint Java_org_rocksdb_Env_getThreadPoolQueueLen(
* Method: incBackgroundThreadsIfNeeded * Method: incBackgroundThreadsIfNeeded
* Signature: (JIB)V * Signature: (JIB)V
*/ */
void Java_org_rocksdb_Env_incBackgroundThreadsIfNeeded( void Java_org_rocksdb_Env_incBackgroundThreadsIfNeeded(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle, jint jnum, jbyte jpriority_value) { jlong jhandle, jint jnum,
jbyte jpriority_value) {
auto* rocks_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle); auto* rocks_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle);
rocks_env->IncBackgroundThreadsIfNeeded( rocks_env->IncBackgroundThreadsIfNeeded(
static_cast<int>(jnum), static_cast<int>(jnum),
@ -98,8 +99,9 @@ void Java_org_rocksdb_Env_incBackgroundThreadsIfNeeded(
* Method: lowerThreadPoolIOPriority * Method: lowerThreadPoolIOPriority
* Signature: (JB)V * Signature: (JB)V
*/ */
void Java_org_rocksdb_Env_lowerThreadPoolIOPriority( void Java_org_rocksdb_Env_lowerThreadPoolIOPriority(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle, jbyte jpriority_value) { jlong jhandle,
jbyte jpriority_value) {
auto* rocks_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle); auto* rocks_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle);
rocks_env->LowerThreadPoolIOPriority( rocks_env->LowerThreadPoolIOPriority(
ROCKSDB_NAMESPACE::PriorityJni::toCppPriority(jpriority_value)); ROCKSDB_NAMESPACE::PriorityJni::toCppPriority(jpriority_value));
@ -110,8 +112,9 @@ void Java_org_rocksdb_Env_lowerThreadPoolIOPriority(
* Method: lowerThreadPoolCPUPriority * Method: lowerThreadPoolCPUPriority
* Signature: (JB)V * Signature: (JB)V
*/ */
void Java_org_rocksdb_Env_lowerThreadPoolCPUPriority( void Java_org_rocksdb_Env_lowerThreadPoolCPUPriority(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle, jbyte jpriority_value) { jlong jhandle,
jbyte jpriority_value) {
auto* rocks_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle); auto* rocks_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle);
rocks_env->LowerThreadPoolCPUPriority( rocks_env->LowerThreadPoolCPUPriority(
ROCKSDB_NAMESPACE::PriorityJni::toCppPriority(jpriority_value)); ROCKSDB_NAMESPACE::PriorityJni::toCppPriority(jpriority_value));
@ -122,8 +125,8 @@ void Java_org_rocksdb_Env_lowerThreadPoolCPUPriority(
* Method: getThreadList * Method: getThreadList
* Signature: (J)[Lorg/rocksdb/ThreadStatus; * Signature: (J)[Lorg/rocksdb/ThreadStatus;
*/ */
jobjectArray Java_org_rocksdb_Env_getThreadList( jobjectArray Java_org_rocksdb_Env_getThreadList(JNIEnv* env, jobject,
JNIEnv* env, jobject, jlong jhandle) { jlong jhandle) {
auto* rocks_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle); auto* rocks_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle);
std::vector<ROCKSDB_NAMESPACE::ThreadStatus> thread_status; std::vector<ROCKSDB_NAMESPACE::ThreadStatus> thread_status;
ROCKSDB_NAMESPACE::Status s = rocks_env->GetThreadList(&thread_status); ROCKSDB_NAMESPACE::Status s = rocks_env->GetThreadList(&thread_status);
@ -160,8 +163,8 @@ jobjectArray Java_org_rocksdb_Env_getThreadList(
* Method: createMemEnv * Method: createMemEnv
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_RocksMemEnv_createMemEnv( jlong Java_org_rocksdb_RocksMemEnv_createMemEnv(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jbase_env_handle) { jlong jbase_env_handle) {
auto* base_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jbase_env_handle); auto* base_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jbase_env_handle);
return GET_CPLUSPLUS_POINTER(ROCKSDB_NAMESPACE::NewMemEnv(base_env)); return GET_CPLUSPLUS_POINTER(ROCKSDB_NAMESPACE::NewMemEnv(base_env));
} }
@ -171,8 +174,8 @@ jlong Java_org_rocksdb_RocksMemEnv_createMemEnv(
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_RocksMemEnv_disposeInternal( void Java_org_rocksdb_RocksMemEnv_disposeInternal(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* e = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle); auto* e = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle);
assert(e != nullptr); assert(e != nullptr);
delete e; delete e;
@ -183,8 +186,8 @@ void Java_org_rocksdb_RocksMemEnv_disposeInternal(
* Method: createTimedEnv * Method: createTimedEnv
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_TimedEnv_createTimedEnv( jlong Java_org_rocksdb_TimedEnv_createTimedEnv(JNIEnv*, jclass,
JNIEnv*, jclass, jlong jbase_env_handle) { jlong jbase_env_handle) {
auto* base_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jbase_env_handle); auto* base_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jbase_env_handle);
return GET_CPLUSPLUS_POINTER(ROCKSDB_NAMESPACE::NewTimedEnv(base_env)); return GET_CPLUSPLUS_POINTER(ROCKSDB_NAMESPACE::NewTimedEnv(base_env));
} }
@ -194,10 +197,9 @@ jlong Java_org_rocksdb_TimedEnv_createTimedEnv(
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_TimedEnv_disposeInternal( void Java_org_rocksdb_TimedEnv_disposeInternal(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* e = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle); auto* e = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jhandle);
assert(e != nullptr); assert(e != nullptr);
delete e; delete e;
} }

@ -33,8 +33,7 @@
* Method: newEnvOptions * Method: newEnvOptions
* Signature: ()J * Signature: ()J
*/ */
jlong Java_org_rocksdb_EnvOptions_newEnvOptions__( jlong Java_org_rocksdb_EnvOptions_newEnvOptions__(JNIEnv *, jclass) {
JNIEnv*, jclass) {
auto *env_opt = new ROCKSDB_NAMESPACE::EnvOptions(); auto *env_opt = new ROCKSDB_NAMESPACE::EnvOptions();
return GET_CPLUSPLUS_POINTER(env_opt); return GET_CPLUSPLUS_POINTER(env_opt);
} }
@ -44,8 +43,8 @@ jlong Java_org_rocksdb_EnvOptions_newEnvOptions__(
* Method: newEnvOptions * Method: newEnvOptions
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_EnvOptions_newEnvOptions__J( jlong Java_org_rocksdb_EnvOptions_newEnvOptions__J(JNIEnv *, jclass,
JNIEnv*, jclass, jlong jdboptions_handle) { jlong jdboptions_handle) {
auto *db_options = auto *db_options =
reinterpret_cast<ROCKSDB_NAMESPACE::DBOptions *>(jdboptions_handle); reinterpret_cast<ROCKSDB_NAMESPACE::DBOptions *>(jdboptions_handle);
auto *env_opt = new ROCKSDB_NAMESPACE::EnvOptions(*db_options); auto *env_opt = new ROCKSDB_NAMESPACE::EnvOptions(*db_options);
@ -57,8 +56,8 @@ jlong Java_org_rocksdb_EnvOptions_newEnvOptions__J(
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_EnvOptions_disposeInternal( void Java_org_rocksdb_EnvOptions_disposeInternal(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto *eo = reinterpret_cast<ROCKSDB_NAMESPACE::EnvOptions *>(jhandle); auto *eo = reinterpret_cast<ROCKSDB_NAMESPACE::EnvOptions *>(jhandle);
assert(eo != nullptr); assert(eo != nullptr);
delete eo; delete eo;
@ -69,8 +68,9 @@ void Java_org_rocksdb_EnvOptions_disposeInternal(
* Method: setUseMmapReads * Method: setUseMmapReads
* Signature: (JZ)V * Signature: (JZ)V
*/ */
void Java_org_rocksdb_EnvOptions_setUseMmapReads( void Java_org_rocksdb_EnvOptions_setUseMmapReads(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle, jboolean use_mmap_reads) { jlong jhandle,
jboolean use_mmap_reads) {
ENV_OPTIONS_SET_BOOL(jhandle, use_mmap_reads); ENV_OPTIONS_SET_BOOL(jhandle, use_mmap_reads);
} }
@ -79,8 +79,8 @@ void Java_org_rocksdb_EnvOptions_setUseMmapReads(
* Method: useMmapReads * Method: useMmapReads
* Signature: (J)Z * Signature: (J)Z
*/ */
jboolean Java_org_rocksdb_EnvOptions_useMmapReads( jboolean Java_org_rocksdb_EnvOptions_useMmapReads(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
return ENV_OPTIONS_GET(jhandle, use_mmap_reads); return ENV_OPTIONS_GET(jhandle, use_mmap_reads);
} }
@ -89,8 +89,9 @@ jboolean Java_org_rocksdb_EnvOptions_useMmapReads(
* Method: setUseMmapWrites * Method: setUseMmapWrites
* Signature: (JZ)V * Signature: (JZ)V
*/ */
void Java_org_rocksdb_EnvOptions_setUseMmapWrites( void Java_org_rocksdb_EnvOptions_setUseMmapWrites(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle, jboolean use_mmap_writes) { jlong jhandle,
jboolean use_mmap_writes) {
ENV_OPTIONS_SET_BOOL(jhandle, use_mmap_writes); ENV_OPTIONS_SET_BOOL(jhandle, use_mmap_writes);
} }
@ -99,8 +100,8 @@ void Java_org_rocksdb_EnvOptions_setUseMmapWrites(
* Method: useMmapWrites * Method: useMmapWrites
* Signature: (J)Z * Signature: (J)Z
*/ */
jboolean Java_org_rocksdb_EnvOptions_useMmapWrites( jboolean Java_org_rocksdb_EnvOptions_useMmapWrites(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
return ENV_OPTIONS_GET(jhandle, use_mmap_writes); return ENV_OPTIONS_GET(jhandle, use_mmap_writes);
} }
@ -109,8 +110,9 @@ jboolean Java_org_rocksdb_EnvOptions_useMmapWrites(
* Method: setUseDirectReads * Method: setUseDirectReads
* Signature: (JZ)V * Signature: (JZ)V
*/ */
void Java_org_rocksdb_EnvOptions_setUseDirectReads( void Java_org_rocksdb_EnvOptions_setUseDirectReads(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle, jboolean use_direct_reads) { jlong jhandle,
jboolean use_direct_reads) {
ENV_OPTIONS_SET_BOOL(jhandle, use_direct_reads); ENV_OPTIONS_SET_BOOL(jhandle, use_direct_reads);
} }
@ -119,8 +121,8 @@ void Java_org_rocksdb_EnvOptions_setUseDirectReads(
* Method: useDirectReads * Method: useDirectReads
* Signature: (J)Z * Signature: (J)Z
*/ */
jboolean Java_org_rocksdb_EnvOptions_useDirectReads( jboolean Java_org_rocksdb_EnvOptions_useDirectReads(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
return ENV_OPTIONS_GET(jhandle, use_direct_reads); return ENV_OPTIONS_GET(jhandle, use_direct_reads);
} }
@ -130,7 +132,7 @@ jboolean Java_org_rocksdb_EnvOptions_useDirectReads(
* Signature: (JZ)V * Signature: (JZ)V
*/ */
void Java_org_rocksdb_EnvOptions_setUseDirectWrites( void Java_org_rocksdb_EnvOptions_setUseDirectWrites(
JNIEnv*, jobject, jlong jhandle, jboolean use_direct_writes) { JNIEnv *, jobject, jlong jhandle, jboolean use_direct_writes) {
ENV_OPTIONS_SET_BOOL(jhandle, use_direct_writes); ENV_OPTIONS_SET_BOOL(jhandle, use_direct_writes);
} }
@ -139,8 +141,8 @@ void Java_org_rocksdb_EnvOptions_setUseDirectWrites(
* Method: useDirectWrites * Method: useDirectWrites
* Signature: (J)Z * Signature: (J)Z
*/ */
jboolean Java_org_rocksdb_EnvOptions_useDirectWrites( jboolean Java_org_rocksdb_EnvOptions_useDirectWrites(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
return ENV_OPTIONS_GET(jhandle, use_direct_writes); return ENV_OPTIONS_GET(jhandle, use_direct_writes);
} }
@ -149,8 +151,9 @@ jboolean Java_org_rocksdb_EnvOptions_useDirectWrites(
* Method: setAllowFallocate * Method: setAllowFallocate
* Signature: (JZ)V * Signature: (JZ)V
*/ */
void Java_org_rocksdb_EnvOptions_setAllowFallocate( void Java_org_rocksdb_EnvOptions_setAllowFallocate(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle, jboolean allow_fallocate) { jlong jhandle,
jboolean allow_fallocate) {
ENV_OPTIONS_SET_BOOL(jhandle, allow_fallocate); ENV_OPTIONS_SET_BOOL(jhandle, allow_fallocate);
} }
@ -159,8 +162,8 @@ void Java_org_rocksdb_EnvOptions_setAllowFallocate(
* Method: allowFallocate * Method: allowFallocate
* Signature: (J)Z * Signature: (J)Z
*/ */
jboolean Java_org_rocksdb_EnvOptions_allowFallocate( jboolean Java_org_rocksdb_EnvOptions_allowFallocate(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
return ENV_OPTIONS_GET(jhandle, allow_fallocate); return ENV_OPTIONS_GET(jhandle, allow_fallocate);
} }
@ -169,8 +172,9 @@ jboolean Java_org_rocksdb_EnvOptions_allowFallocate(
* Method: setSetFdCloexec * Method: setSetFdCloexec
* Signature: (JZ)V * Signature: (JZ)V
*/ */
void Java_org_rocksdb_EnvOptions_setSetFdCloexec( void Java_org_rocksdb_EnvOptions_setSetFdCloexec(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle, jboolean set_fd_cloexec) { jlong jhandle,
jboolean set_fd_cloexec) {
ENV_OPTIONS_SET_BOOL(jhandle, set_fd_cloexec); ENV_OPTIONS_SET_BOOL(jhandle, set_fd_cloexec);
} }
@ -179,8 +183,8 @@ void Java_org_rocksdb_EnvOptions_setSetFdCloexec(
* Method: setFdCloexec * Method: setFdCloexec
* Signature: (J)Z * Signature: (J)Z
*/ */
jboolean Java_org_rocksdb_EnvOptions_setFdCloexec( jboolean Java_org_rocksdb_EnvOptions_setFdCloexec(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
return ENV_OPTIONS_GET(jhandle, set_fd_cloexec); return ENV_OPTIONS_GET(jhandle, set_fd_cloexec);
} }
@ -189,8 +193,9 @@ jboolean Java_org_rocksdb_EnvOptions_setFdCloexec(
* Method: setBytesPerSync * Method: setBytesPerSync
* Signature: (JJ)V * Signature: (JJ)V
*/ */
void Java_org_rocksdb_EnvOptions_setBytesPerSync( void Java_org_rocksdb_EnvOptions_setBytesPerSync(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle, jlong bytes_per_sync) { jlong jhandle,
jlong bytes_per_sync) {
ENV_OPTIONS_SET_UINT64_T(jhandle, bytes_per_sync); ENV_OPTIONS_SET_UINT64_T(jhandle, bytes_per_sync);
} }
@ -199,8 +204,8 @@ void Java_org_rocksdb_EnvOptions_setBytesPerSync(
* Method: bytesPerSync * Method: bytesPerSync
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_EnvOptions_bytesPerSync( jlong Java_org_rocksdb_EnvOptions_bytesPerSync(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
return ENV_OPTIONS_GET(jhandle, bytes_per_sync); return ENV_OPTIONS_GET(jhandle, bytes_per_sync);
} }
@ -210,7 +215,7 @@ jlong Java_org_rocksdb_EnvOptions_bytesPerSync(
* Signature: (JZ)V * Signature: (JZ)V
*/ */
void Java_org_rocksdb_EnvOptions_setFallocateWithKeepSize( void Java_org_rocksdb_EnvOptions_setFallocateWithKeepSize(
JNIEnv*, jobject, jlong jhandle, jboolean fallocate_with_keep_size) { JNIEnv *, jobject, jlong jhandle, jboolean fallocate_with_keep_size) {
ENV_OPTIONS_SET_BOOL(jhandle, fallocate_with_keep_size); ENV_OPTIONS_SET_BOOL(jhandle, fallocate_with_keep_size);
} }
@ -219,8 +224,8 @@ void Java_org_rocksdb_EnvOptions_setFallocateWithKeepSize(
* Method: fallocateWithKeepSize * Method: fallocateWithKeepSize
* Signature: (J)Z * Signature: (J)Z
*/ */
jboolean Java_org_rocksdb_EnvOptions_fallocateWithKeepSize( jboolean Java_org_rocksdb_EnvOptions_fallocateWithKeepSize(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
return ENV_OPTIONS_GET(jhandle, fallocate_with_keep_size); return ENV_OPTIONS_GET(jhandle, fallocate_with_keep_size);
} }
@ -230,7 +235,7 @@ jboolean Java_org_rocksdb_EnvOptions_fallocateWithKeepSize(
* Signature: (JJ)V * Signature: (JJ)V
*/ */
void Java_org_rocksdb_EnvOptions_setCompactionReadaheadSize( void Java_org_rocksdb_EnvOptions_setCompactionReadaheadSize(
JNIEnv*, jobject, jlong jhandle, jlong compaction_readahead_size) { JNIEnv *, jobject, jlong jhandle, jlong compaction_readahead_size) {
ENV_OPTIONS_SET_SIZE_T(jhandle, compaction_readahead_size); ENV_OPTIONS_SET_SIZE_T(jhandle, compaction_readahead_size);
} }
@ -239,8 +244,8 @@ void Java_org_rocksdb_EnvOptions_setCompactionReadaheadSize(
* Method: compactionReadaheadSize * Method: compactionReadaheadSize
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_EnvOptions_compactionReadaheadSize( jlong Java_org_rocksdb_EnvOptions_compactionReadaheadSize(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
return ENV_OPTIONS_GET(jhandle, compaction_readahead_size); return ENV_OPTIONS_GET(jhandle, compaction_readahead_size);
} }
@ -250,7 +255,7 @@ jlong Java_org_rocksdb_EnvOptions_compactionReadaheadSize(
* Signature: (JJ)V * Signature: (JJ)V
*/ */
void Java_org_rocksdb_EnvOptions_setRandomAccessMaxBufferSize( void Java_org_rocksdb_EnvOptions_setRandomAccessMaxBufferSize(
JNIEnv*, jobject, jlong jhandle, jlong random_access_max_buffer_size) { JNIEnv *, jobject, jlong jhandle, jlong random_access_max_buffer_size) {
ENV_OPTIONS_SET_SIZE_T(jhandle, random_access_max_buffer_size); ENV_OPTIONS_SET_SIZE_T(jhandle, random_access_max_buffer_size);
} }
@ -259,8 +264,8 @@ void Java_org_rocksdb_EnvOptions_setRandomAccessMaxBufferSize(
* Method: randomAccessMaxBufferSize * Method: randomAccessMaxBufferSize
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_EnvOptions_randomAccessMaxBufferSize( jlong Java_org_rocksdb_EnvOptions_randomAccessMaxBufferSize(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
return ENV_OPTIONS_GET(jhandle, random_access_max_buffer_size); return ENV_OPTIONS_GET(jhandle, random_access_max_buffer_size);
} }
@ -270,7 +275,7 @@ jlong Java_org_rocksdb_EnvOptions_randomAccessMaxBufferSize(
* Signature: (JJ)V * Signature: (JJ)V
*/ */
void Java_org_rocksdb_EnvOptions_setWritableFileMaxBufferSize( void Java_org_rocksdb_EnvOptions_setWritableFileMaxBufferSize(
JNIEnv*, jobject, jlong jhandle, jlong writable_file_max_buffer_size) { JNIEnv *, jobject, jlong jhandle, jlong writable_file_max_buffer_size) {
ENV_OPTIONS_SET_SIZE_T(jhandle, writable_file_max_buffer_size); ENV_OPTIONS_SET_SIZE_T(jhandle, writable_file_max_buffer_size);
} }
@ -279,8 +284,8 @@ void Java_org_rocksdb_EnvOptions_setWritableFileMaxBufferSize(
* Method: writableFileMaxBufferSize * Method: writableFileMaxBufferSize
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_EnvOptions_writableFileMaxBufferSize( jlong Java_org_rocksdb_EnvOptions_writableFileMaxBufferSize(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
return ENV_OPTIONS_GET(jhandle, writable_file_max_buffer_size); return ENV_OPTIONS_GET(jhandle, writable_file_max_buffer_size);
} }
@ -289,8 +294,9 @@ jlong Java_org_rocksdb_EnvOptions_writableFileMaxBufferSize(
* Method: setRateLimiter * Method: setRateLimiter
* Signature: (JJ)V * Signature: (JJ)V
*/ */
void Java_org_rocksdb_EnvOptions_setRateLimiter( void Java_org_rocksdb_EnvOptions_setRateLimiter(JNIEnv *, jobject,
JNIEnv*, jobject, jlong jhandle, jlong rl_handle) { jlong jhandle,
jlong rl_handle) {
auto *sptr_rate_limiter = auto *sptr_rate_limiter =
reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::RateLimiter> *>( reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::RateLimiter> *>(
rl_handle); rl_handle);

@ -29,9 +29,8 @@ jlong Java_org_rocksdb_IngestExternalFileOptions_newIngestExternalFileOptions__(
* Signature: (ZZZZ)J * Signature: (ZZZZ)J
*/ */
jlong Java_org_rocksdb_IngestExternalFileOptions_newIngestExternalFileOptions__ZZZZ( jlong Java_org_rocksdb_IngestExternalFileOptions_newIngestExternalFileOptions__ZZZZ(
JNIEnv*, jclass, jboolean jmove_files, JNIEnv*, jclass, jboolean jmove_files, jboolean jsnapshot_consistency,
jboolean jsnapshot_consistency, jboolean jallow_global_seqno, jboolean jallow_global_seqno, jboolean jallow_blocking_flush) {
jboolean jallow_blocking_flush) {
auto* options = new ROCKSDB_NAMESPACE::IngestExternalFileOptions(); auto* options = new ROCKSDB_NAMESPACE::IngestExternalFileOptions();
options->move_files = static_cast<bool>(jmove_files); options->move_files = static_cast<bool>(jmove_files);
options->snapshot_consistency = static_cast<bool>(jsnapshot_consistency); options->snapshot_consistency = static_cast<bool>(jsnapshot_consistency);
@ -45,8 +44,8 @@ jlong Java_org_rocksdb_IngestExternalFileOptions_newIngestExternalFileOptions__Z
* Method: moveFiles * Method: moveFiles
* Signature: (J)Z * Signature: (J)Z
*/ */
jboolean Java_org_rocksdb_IngestExternalFileOptions_moveFiles( jboolean Java_org_rocksdb_IngestExternalFileOptions_moveFiles(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::IngestExternalFileOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::IngestExternalFileOptions*>(jhandle);
return static_cast<jboolean>(options->move_files); return static_cast<jboolean>(options->move_files);
@ -165,8 +164,9 @@ void Java_org_rocksdb_IngestExternalFileOptions_setIngestBehind(
* Method: writeGlobalSeqno * Method: writeGlobalSeqno
* Signature: (J)Z * Signature: (J)Z
*/ */
JNIEXPORT jboolean JNICALL Java_org_rocksdb_IngestExternalFileOptions_writeGlobalSeqno( JNIEXPORT jboolean JNICALL
JNIEnv*, jobject, jlong jhandle) { Java_org_rocksdb_IngestExternalFileOptions_writeGlobalSeqno(JNIEnv*, jobject,
jlong jhandle) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::IngestExternalFileOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::IngestExternalFileOptions*>(jhandle);
return options->write_global_seqno == JNI_TRUE; return options->write_global_seqno == JNI_TRUE;
@ -177,7 +177,8 @@ JNIEXPORT jboolean JNICALL Java_org_rocksdb_IngestExternalFileOptions_writeGloba
* Method: setWriteGlobalSeqno * Method: setWriteGlobalSeqno
* Signature: (JZ)V * Signature: (JZ)V
*/ */
JNIEXPORT void JNICALL Java_org_rocksdb_IngestExternalFileOptions_setWriteGlobalSeqno( JNIEXPORT void JNICALL
Java_org_rocksdb_IngestExternalFileOptions_setWriteGlobalSeqno(
JNIEnv*, jobject, jlong jhandle, jboolean jwrite_global_seqno) { JNIEnv*, jobject, jlong jhandle, jboolean jwrite_global_seqno) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::IngestExternalFileOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::IngestExternalFileOptions*>(jhandle);
@ -189,8 +190,9 @@ JNIEXPORT void JNICALL Java_org_rocksdb_IngestExternalFileOptions_setWriteGlobal
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_IngestExternalFileOptions_disposeInternal( void Java_org_rocksdb_IngestExternalFileOptions_disposeInternal(JNIEnv*,
JNIEnv*, jobject, jlong jhandle) { jobject,
jlong jhandle) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::IngestExternalFileOptions*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::IngestExternalFileOptions*>(jhandle);
delete options; delete options;

@ -6,8 +6,10 @@
// This file implements the callback "bridge" between Java and C++ for // This file implements the callback "bridge" between Java and C++ for
// JNI Callbacks from C++ to sub-classes or org.rocksdb.RocksCallbackObject // JNI Callbacks from C++ to sub-classes or org.rocksdb.RocksCallbackObject
#include <assert.h>
#include "rocksjni/jnicallback.h" #include "rocksjni/jnicallback.h"
#include <assert.h>
#include "rocksjni/portal.h" #include "rocksjni/portal.h"
namespace ROCKSDB_NAMESPACE { namespace ROCKSDB_NAMESPACE {
@ -15,7 +17,7 @@ JniCallback::JniCallback(JNIEnv* env, jobject jcallback_obj) {
// Note: jcallback_obj may be accessed by multiple threads, // Note: jcallback_obj may be accessed by multiple threads,
// so we ref the jvm not the env // so we ref the jvm not the env
const jint rs = env->GetJavaVM(&m_jvm); const jint rs = env->GetJavaVM(&m_jvm);
if(rs != JNI_OK) { if (rs != JNI_OK) {
// exception thrown // exception thrown
return; return;
} }
@ -24,7 +26,7 @@ JniCallback::JniCallback(JNIEnv* env, jobject jcallback_obj) {
// across multiple method calls, so we create a global ref // across multiple method calls, so we create a global ref
assert(jcallback_obj != nullptr); assert(jcallback_obj != nullptr);
m_jcallback_obj = env->NewGlobalRef(jcallback_obj); m_jcallback_obj = env->NewGlobalRef(jcallback_obj);
if(jcallback_obj == nullptr) { if (jcallback_obj == nullptr) {
// exception thrown: OutOfMemoryError // exception thrown: OutOfMemoryError
return; return;
} }

@ -26,7 +26,7 @@ class JniCallback {
jobject m_jcallback_obj; jobject m_jcallback_obj;
JNIEnv* getJniEnv(jboolean* attached) const; JNIEnv* getJniEnv(jboolean* attached) const;
void releaseJniEnv(jboolean& attached) const; void releaseJniEnv(jboolean& attached) const;
}; };
} // namespace ROCKSDB_NAMESPACE } // namespace ROCKSDB_NAMESPACE
#endif // JAVA_ROCKSJNI_JNICALLBACK_H_ #endif // JAVA_ROCKSJNI_JNICALLBACK_H_

@ -10,11 +10,13 @@
#define JAVA_ROCKSJNI_LOGGERJNICALLBACK_H_ #define JAVA_ROCKSJNI_LOGGERJNICALLBACK_H_
#include <jni.h> #include <jni.h>
#include <memory> #include <memory>
#include <string> #include <string>
#include "rocksjni/jnicallback.h"
#include "port/port.h" #include "port/port.h"
#include "rocksdb/env.h" #include "rocksdb/env.h"
#include "rocksjni/jnicallback.h"
namespace ROCKSDB_NAMESPACE { namespace ROCKSDB_NAMESPACE {
@ -23,8 +25,8 @@ class LoggerJniCallback : public JniCallback, public Logger {
LoggerJniCallback(JNIEnv* env, jobject jLogger); LoggerJniCallback(JNIEnv* env, jobject jLogger);
~LoggerJniCallback(); ~LoggerJniCallback();
using Logger::SetInfoLogLevel;
using Logger::GetInfoLogLevel; using Logger::GetInfoLogLevel;
using Logger::SetInfoLogLevel;
// Write an entry to the log file with the specified format. // Write an entry to the log file with the specified format.
virtual void Logv(const char* format, va_list ap); virtual void Logv(const char* format, va_list ap);
// Write an entry to the log file with the specified log level // Write an entry to the log file with the specified log level
@ -43,7 +45,7 @@ class LoggerJniCallback : public JniCallback, public Logger {
jobject m_jfatal_level; jobject m_jfatal_level;
jobject m_jheader_level; jobject m_jheader_level;
std::unique_ptr<char[]> format_str(const char* format, va_list ap) const; std::unique_ptr<char[]> format_str(const char* format, va_list ap) const;
}; };
} // namespace ROCKSDB_NAMESPACE } // namespace ROCKSDB_NAMESPACE
#endif // JAVA_ROCKSJNI_LOGGERJNICALLBACK_H_ #endif // JAVA_ROCKSJNI_LOGGERJNICALLBACK_H_

@ -3,19 +3,18 @@
// COPYING file in the root directory) and Apache 2.0 License // COPYING file in the root directory) and Apache 2.0 License
// (found in the LICENSE.Apache file in the root directory). // (found in the LICENSE.Apache file in the root directory).
#include "rocksdb/utilities/memory_util.h"
#include <jni.h> #include <jni.h>
#include <map> #include <map>
#include <string> #include <string>
#include <unordered_set> #include <unordered_set>
#include <vector> #include <vector>
#include "include/org_rocksdb_MemoryUtil.h" #include "include/org_rocksdb_MemoryUtil.h"
#include "rocksjni/portal.h" #include "rocksjni/portal.h"
#include "rocksdb/utilities/memory_util.h"
/* /*
* Class: org_rocksdb_MemoryUtil * Class: org_rocksdb_MemoryUtil
* Method: getApproximateMemoryUsageByType * Method: getApproximateMemoryUsageByType
@ -34,8 +33,9 @@ jobject Java_org_rocksdb_MemoryUtil_getApproximateMemoryUsageByType(
std::unordered_set<const ROCKSDB_NAMESPACE::Cache *> cache_set; std::unordered_set<const ROCKSDB_NAMESPACE::Cache *> cache_set;
jsize cache_handle_count = env->GetArrayLength(jcache_handles); jsize cache_handle_count = env->GetArrayLength(jcache_handles);
if(cache_handle_count > 0) { if (cache_handle_count > 0) {
jlong *ptr_jcache_handles = env->GetLongArrayElements(jcache_handles, nullptr); jlong *ptr_jcache_handles =
env->GetLongArrayElements(jcache_handles, nullptr);
if (ptr_jcache_handles == nullptr) { if (ptr_jcache_handles == nullptr) {
// exception thrown: OutOfMemoryError // exception thrown: OutOfMemoryError
return nullptr; return nullptr;
@ -46,7 +46,8 @@ jobject Java_org_rocksdb_MemoryUtil_getApproximateMemoryUsageByType(
ptr_jcache_handles[i]); ptr_jcache_handles[i]);
cache_set.insert(cache_ptr->get()); cache_set.insert(cache_ptr->get());
} }
env->ReleaseLongArrayElements(jcache_handles, ptr_jcache_handles, JNI_ABORT); env->ReleaseLongArrayElements(jcache_handles, ptr_jcache_handles,
JNI_ABORT);
} }
std::map<ROCKSDB_NAMESPACE::MemoryUtil::UsageType, uint64_t> usage_by_type; std::map<ROCKSDB_NAMESPACE::MemoryUtil::UsageType, uint64_t> usage_by_type;
@ -85,8 +86,7 @@ jobject Java_org_rocksdb_MemoryUtil_getApproximateMemoryUsageByType(
} }
// Construct and return pointer to pair of jobjects // Construct and return pointer to pair of jobjects
return std::unique_ptr<std::pair<jobject, jobject>>( return std::unique_ptr<std::pair<jobject, jobject>>(
new std::pair<jobject, jobject>(jusage_type, new std::pair<jobject, jobject>(jusage_type, jusage_value));
jusage_value));
}; };
if (!ROCKSDB_NAMESPACE::HashMapJni::putAll(env, jusage_by_type, if (!ROCKSDB_NAMESPACE::HashMapJni::putAll(env, jusage_by_type,

@ -159,8 +159,8 @@ Java_org_rocksdb_OptimisticTransactionDB_open__JLjava_lang_String_2_3_3B_3J(
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_OptimisticTransactionDB_disposeInternal( void Java_org_rocksdb_OptimisticTransactionDB_disposeInternal(JNIEnv*, jobject,
JNIEnv *, jobject, jlong jhandle) { jlong jhandle) {
auto* optimistic_txn_db = auto* optimistic_txn_db =
reinterpret_cast<ROCKSDB_NAMESPACE::OptimisticTransactionDB*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::OptimisticTransactionDB*>(jhandle);
assert(optimistic_txn_db != nullptr); assert(optimistic_txn_db != nullptr);
@ -172,8 +172,8 @@ void Java_org_rocksdb_OptimisticTransactionDB_disposeInternal(
* Method: closeDatabase * Method: closeDatabase
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_OptimisticTransactionDB_closeDatabase( void Java_org_rocksdb_OptimisticTransactionDB_closeDatabase(JNIEnv* env, jclass,
JNIEnv* env, jclass, jlong jhandle) { jlong jhandle) {
auto* optimistic_txn_db = auto* optimistic_txn_db =
reinterpret_cast<ROCKSDB_NAMESPACE::OptimisticTransactionDB*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::OptimisticTransactionDB*>(jhandle);
assert(optimistic_txn_db != nullptr); assert(optimistic_txn_db != nullptr);
@ -276,8 +276,8 @@ jlong Java_org_rocksdb_OptimisticTransactionDB_beginTransaction_1withOld__JJJJ(
* Method: getBaseDB * Method: getBaseDB
* Signature: (J)J * Signature: (J)J
*/ */
jlong Java_org_rocksdb_OptimisticTransactionDB_getBaseDB( jlong Java_org_rocksdb_OptimisticTransactionDB_getBaseDB(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* optimistic_txn_db = auto* optimistic_txn_db =
reinterpret_cast<ROCKSDB_NAMESPACE::OptimisticTransactionDB*>(jhandle); reinterpret_cast<ROCKSDB_NAMESPACE::OptimisticTransactionDB*>(jhandle);
return GET_CPLUSPLUS_POINTER(optimistic_txn_db->GetBaseDB()); return GET_CPLUSPLUS_POINTER(optimistic_txn_db->GetBaseDB());

File diff suppressed because it is too large Load Diff

@ -6,14 +6,15 @@
// This file implements the "bridge" between Java and C++ and enables // This file implements the "bridge" between Java and C++ and enables
// calling C++ ROCKSDB_NAMESPACE::OptionsUtil methods from Java side. // calling C++ ROCKSDB_NAMESPACE::OptionsUtil methods from Java side.
#include "rocksdb/utilities/options_util.h"
#include <jni.h> #include <jni.h>
#include <string> #include <string>
#include "include/org_rocksdb_OptionsUtil.h" #include "include/org_rocksdb_OptionsUtil.h"
#include "rocksdb/db.h" #include "rocksdb/db.h"
#include "rocksdb/env.h" #include "rocksdb/env.h"
#include "rocksdb/utilities/options_util.h"
#include "rocksjni/portal.h" #include "rocksjni/portal.h"
void build_column_family_descriptor_list( void build_column_family_descriptor_list(

@ -23,8 +23,8 @@
* Signature: (JLjava/lang/String;JJZ)J * Signature: (JLjava/lang/String;JJZ)J
*/ */
jlong Java_org_rocksdb_PersistentCache_newPersistentCache( jlong Java_org_rocksdb_PersistentCache_newPersistentCache(
JNIEnv* env, jclass, jlong jenv_handle, jstring jpath, JNIEnv* env, jclass, jlong jenv_handle, jstring jpath, jlong jsz,
jlong jsz, jlong jlogger_handle, jboolean joptimized_for_nvm) { jlong jlogger_handle, jboolean joptimized_for_nvm) {
auto* rocks_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jenv_handle); auto* rocks_env = reinterpret_cast<ROCKSDB_NAMESPACE::Env*>(jenv_handle);
jboolean has_exception = JNI_FALSE; jboolean has_exception = JNI_FALSE;
std::string path = std::string path =
@ -51,8 +51,8 @@ jlong Java_org_rocksdb_PersistentCache_newPersistentCache(
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_PersistentCache_disposeInternal( void Java_org_rocksdb_PersistentCache_disposeInternal(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* cache = auto* cache =
reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::PersistentCache>*>( reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::PersistentCache>*>(
jhandle); jhandle);

File diff suppressed because it is too large Load Diff

@ -6,7 +6,6 @@
#include <jni.h> #include <jni.h>
#include "include/org_rocksdb_RocksDBExceptionTest.h" #include "include/org_rocksdb_RocksDBExceptionTest.h"
#include "rocksdb/slice.h" #include "rocksdb/slice.h"
#include "rocksdb/status.h" #include "rocksdb/status.h"
#include "rocksjni/portal.h" #include "rocksjni/portal.h"

File diff suppressed because it is too large Load Diff

@ -176,7 +176,8 @@ jbyteArray Java_org_rocksdb_SstFileReaderIterator_key0(JNIEnv* env,
* Method: value0 * Method: value0
* Signature: (J)[B * Signature: (J)[B
*/ */
jbyteArray Java_org_rocksdb_SstFileReaderIterator_value0(JNIEnv* env, jobject /*jobj*/, jbyteArray Java_org_rocksdb_SstFileReaderIterator_value0(JNIEnv* env,
jobject /*jobj*/,
jlong handle) { jlong handle) {
auto* it = reinterpret_cast<ROCKSDB_NAMESPACE::Iterator*>(handle); auto* it = reinterpret_cast<ROCKSDB_NAMESPACE::Iterator*>(handle);
ROCKSDB_NAMESPACE::Slice value_slice = it->value(); ROCKSDB_NAMESPACE::Slice value_slice = it->value();
@ -186,10 +187,11 @@ jbyteArray Java_org_rocksdb_SstFileReaderIterator_value0(JNIEnv* env, jobject /*
if (jkeyValue == nullptr) { if (jkeyValue == nullptr) {
// exception thrown: OutOfMemoryError // exception thrown: OutOfMemoryError
return nullptr; return nullptr;
} }
env->SetByteArrayRegion(jkeyValue, 0, static_cast<jsize>(value_slice.size()), env->SetByteArrayRegion(
const_cast<jbyte*>(reinterpret_cast<const jbyte*>(value_slice.data()))); jkeyValue, 0, static_cast<jsize>(value_slice.size()),
return jkeyValue; const_cast<jbyte*>(reinterpret_cast<const jbyte*>(value_slice.data())));
return jkeyValue;
} }
/* /*
@ -357,8 +359,9 @@ void Java_org_rocksdb_SstFileReaderIterator_seekForPrevByteArray0(
* Method: refresh0 * Method: refresh0
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_SstFileReaderIterator_refresh0(JNIEnv* env, jobject /*jobj*/, void Java_org_rocksdb_SstFileReaderIterator_refresh0(JNIEnv* env,
jlong handle) { jobject /*jobj*/,
jlong handle) {
auto* it = reinterpret_cast<ROCKSDB_NAMESPACE::Iterator*>(handle); auto* it = reinterpret_cast<ROCKSDB_NAMESPACE::Iterator*>(handle);
ROCKSDB_NAMESPACE::Status s = it->Refresh(); ROCKSDB_NAMESPACE::Status s = it->Refresh();

@ -23,10 +23,8 @@
* Method: newStatistics * Method: newStatistics
* Signature: ()J * Signature: ()J
*/ */
jlong Java_org_rocksdb_Statistics_newStatistics__( jlong Java_org_rocksdb_Statistics_newStatistics__(JNIEnv* env, jclass jcls) {
JNIEnv* env, jclass jcls) { return Java_org_rocksdb_Statistics_newStatistics___3BJ(env, jcls, nullptr, 0);
return Java_org_rocksdb_Statistics_newStatistics___3BJ(
env, jcls, nullptr, 0);
} }
/* /*
@ -45,10 +43,10 @@ jlong Java_org_rocksdb_Statistics_newStatistics__J(
* Method: newStatistics * Method: newStatistics
* Signature: ([B)J * Signature: ([B)J
*/ */
jlong Java_org_rocksdb_Statistics_newStatistics___3B( jlong Java_org_rocksdb_Statistics_newStatistics___3B(JNIEnv* env, jclass jcls,
JNIEnv* env, jclass jcls, jbyteArray jhistograms) { jbyteArray jhistograms) {
return Java_org_rocksdb_Statistics_newStatistics___3BJ( return Java_org_rocksdb_Statistics_newStatistics___3BJ(env, jcls, jhistograms,
env, jcls, jhistograms, 0); 0);
} }
/* /*
@ -57,7 +55,8 @@ jlong Java_org_rocksdb_Statistics_newStatistics___3B(
* Signature: ([BJ)J * Signature: ([BJ)J
*/ */
jlong Java_org_rocksdb_Statistics_newStatistics___3BJ( jlong Java_org_rocksdb_Statistics_newStatistics___3BJ(
JNIEnv* env, jclass, jbyteArray jhistograms, jlong jother_statistics_handle) { JNIEnv* env, jclass, jbyteArray jhistograms,
jlong jother_statistics_handle) {
std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>* pSptr_other_statistics = std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>* pSptr_other_statistics =
nullptr; nullptr;
if (jother_statistics_handle > 0) { if (jother_statistics_handle > 0) {
@ -105,8 +104,8 @@ jlong Java_org_rocksdb_Statistics_newStatistics___3BJ(
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_Statistics_disposeInternal( void Java_org_rocksdb_Statistics_disposeInternal(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
if (jhandle > 0) { if (jhandle > 0) {
auto* pSptr_statistics = auto* pSptr_statistics =
reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>( reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>(
@ -120,8 +119,7 @@ void Java_org_rocksdb_Statistics_disposeInternal(
* Method: statsLevel * Method: statsLevel
* Signature: (J)B * Signature: (J)B
*/ */
jbyte Java_org_rocksdb_Statistics_statsLevel( jbyte Java_org_rocksdb_Statistics_statsLevel(JNIEnv*, jobject, jlong jhandle) {
JNIEnv*, jobject, jlong jhandle) {
auto* pSptr_statistics = auto* pSptr_statistics =
reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>( reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>(
jhandle); jhandle);
@ -135,8 +133,8 @@ jbyte Java_org_rocksdb_Statistics_statsLevel(
* Method: setStatsLevel * Method: setStatsLevel
* Signature: (JB)V * Signature: (JB)V
*/ */
void Java_org_rocksdb_Statistics_setStatsLevel( void Java_org_rocksdb_Statistics_setStatsLevel(JNIEnv*, jobject, jlong jhandle,
JNIEnv*, jobject, jlong jhandle, jbyte jstats_level) { jbyte jstats_level) {
auto* pSptr_statistics = auto* pSptr_statistics =
reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>( reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>(
jhandle); jhandle);
@ -151,8 +149,9 @@ void Java_org_rocksdb_Statistics_setStatsLevel(
* Method: getTickerCount * Method: getTickerCount
* Signature: (JB)J * Signature: (JB)J
*/ */
jlong Java_org_rocksdb_Statistics_getTickerCount( jlong Java_org_rocksdb_Statistics_getTickerCount(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle, jbyte jticker_type) { jlong jhandle,
jbyte jticker_type) {
auto* pSptr_statistics = auto* pSptr_statistics =
reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>( reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>(
jhandle); jhandle);
@ -167,8 +166,9 @@ jlong Java_org_rocksdb_Statistics_getTickerCount(
* Method: getAndResetTickerCount * Method: getAndResetTickerCount
* Signature: (JB)J * Signature: (JB)J
*/ */
jlong Java_org_rocksdb_Statistics_getAndResetTickerCount( jlong Java_org_rocksdb_Statistics_getAndResetTickerCount(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle, jbyte jticker_type) { jlong jhandle,
jbyte jticker_type) {
auto* pSptr_statistics = auto* pSptr_statistics =
reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>( reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>(
jhandle); jhandle);
@ -182,8 +182,9 @@ jlong Java_org_rocksdb_Statistics_getAndResetTickerCount(
* Method: getHistogramData * Method: getHistogramData
* Signature: (JB)Lorg/rocksdb/HistogramData; * Signature: (JB)Lorg/rocksdb/HistogramData;
*/ */
jobject Java_org_rocksdb_Statistics_getHistogramData( jobject Java_org_rocksdb_Statistics_getHistogramData(JNIEnv* env, jobject,
JNIEnv* env, jobject, jlong jhandle, jbyte jhistogram_type) { jlong jhandle,
jbyte jhistogram_type) {
auto* pSptr_statistics = auto* pSptr_statistics =
reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>( reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>(
jhandle); jhandle);
@ -213,8 +214,8 @@ jobject Java_org_rocksdb_Statistics_getHistogramData(
return env->NewObject(jclazz, mid, data.median, data.percentile95, return env->NewObject(jclazz, mid, data.median, data.percentile95,
data.percentile99, data.average, data.percentile99, data.average,
data.standard_deviation, data.max, data.count, data.standard_deviation, data.max, data.count, data.sum,
data.sum, data.min); data.min);
} }
/* /*
@ -222,8 +223,9 @@ jobject Java_org_rocksdb_Statistics_getHistogramData(
* Method: getHistogramString * Method: getHistogramString
* Signature: (JB)Ljava/lang/String; * Signature: (JB)Ljava/lang/String;
*/ */
jstring Java_org_rocksdb_Statistics_getHistogramString( jstring Java_org_rocksdb_Statistics_getHistogramString(JNIEnv* env, jobject,
JNIEnv* env, jobject, jlong jhandle, jbyte jhistogram_type) { jlong jhandle,
jbyte jhistogram_type) {
auto* pSptr_statistics = auto* pSptr_statistics =
reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>( reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>(
jhandle); jhandle);
@ -239,8 +241,7 @@ jstring Java_org_rocksdb_Statistics_getHistogramString(
* Method: reset * Method: reset
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_Statistics_reset( void Java_org_rocksdb_Statistics_reset(JNIEnv* env, jobject, jlong jhandle) {
JNIEnv* env, jobject, jlong jhandle) {
auto* pSptr_statistics = auto* pSptr_statistics =
reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>( reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>(
jhandle); jhandle);
@ -256,8 +257,8 @@ void Java_org_rocksdb_Statistics_reset(
* Method: toString * Method: toString
* Signature: (J)Ljava/lang/String; * Signature: (J)Ljava/lang/String;
*/ */
jstring Java_org_rocksdb_Statistics_toString( jstring Java_org_rocksdb_Statistics_toString(JNIEnv* env, jobject,
JNIEnv* env, jobject, jlong jhandle) { jlong jhandle) {
auto* pSptr_statistics = auto* pSptr_statistics =
reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>( reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::Statistics>*>(
jhandle); jhandle);

@ -12,8 +12,9 @@
#include <memory> #include <memory>
#include <set> #include <set>
#include <string> #include <string>
#include "rocksdb/statistics.h"
#include "monitoring/statistics.h" #include "monitoring/statistics.h"
#include "rocksdb/statistics.h"
namespace ROCKSDB_NAMESPACE { namespace ROCKSDB_NAMESPACE {
@ -26,8 +27,8 @@ class StatisticsJni : public StatisticsImpl {
private: private:
const std::set<uint32_t> m_ignore_histograms; const std::set<uint32_t> m_ignore_histograms;
}; };
} // namespace ROCKSDB_NAMESPACE } // namespace ROCKSDB_NAMESPACE
#endif // JAVA_ROCKSJNI_STATISTICSJNI_H_ #endif // JAVA_ROCKSJNI_STATISTICSJNI_H_

@ -72,9 +72,9 @@ jlong Java_org_rocksdb_BlockBasedTableConfig_newTableFactoryHandle(
options.cache_index_and_filter_blocks_with_high_priority = options.cache_index_and_filter_blocks_with_high_priority =
static_cast<bool>(jcache_index_and_filter_blocks_with_high_priority); static_cast<bool>(jcache_index_and_filter_blocks_with_high_priority);
options.pin_l0_filter_and_index_blocks_in_cache = options.pin_l0_filter_and_index_blocks_in_cache =
static_cast<bool>(jpin_l0_filter_and_index_blocks_in_cache); static_cast<bool>(jpin_l0_filter_and_index_blocks_in_cache);
options.pin_top_level_index_and_filter = options.pin_top_level_index_and_filter =
static_cast<bool>(jpin_top_level_index_and_filter); static_cast<bool>(jpin_top_level_index_and_filter);
options.index_type = options.index_type =
ROCKSDB_NAMESPACE::IndexTypeJni::toCppIndexType(jindex_type_value); ROCKSDB_NAMESPACE::IndexTypeJni::toCppIndexType(jindex_type_value);
options.data_block_index_type = options.data_block_index_type =
@ -131,7 +131,8 @@ jlong Java_org_rocksdb_BlockBasedTableConfig_newTableFactoryHandle(
options.block_size = static_cast<size_t>(jblock_size); options.block_size = static_cast<size_t>(jblock_size);
options.block_size_deviation = static_cast<int>(jblock_size_deviation); options.block_size_deviation = static_cast<int>(jblock_size_deviation);
options.block_restart_interval = static_cast<int>(jblock_restart_interval); options.block_restart_interval = static_cast<int>(jblock_restart_interval);
options.index_block_restart_interval = static_cast<int>(jindex_block_restart_interval); options.index_block_restart_interval =
static_cast<int>(jindex_block_restart_interval);
options.metadata_block_size = static_cast<uint64_t>(jmetadata_block_size); options.metadata_block_size = static_cast<uint64_t>(jmetadata_block_size);
options.partition_filters = static_cast<bool>(jpartition_filters); options.partition_filters = static_cast<bool>(jpartition_filters);
options.optimize_filters_for_memory = options.optimize_filters_for_memory =
@ -145,9 +146,11 @@ jlong Java_org_rocksdb_BlockBasedTableConfig_newTableFactoryHandle(
} }
options.whole_key_filtering = static_cast<bool>(jwhole_key_filtering); options.whole_key_filtering = static_cast<bool>(jwhole_key_filtering);
options.verify_compression = static_cast<bool>(jverify_compression); options.verify_compression = static_cast<bool>(jverify_compression);
options.read_amp_bytes_per_bit = static_cast<uint32_t>(jread_amp_bytes_per_bit); options.read_amp_bytes_per_bit =
static_cast<uint32_t>(jread_amp_bytes_per_bit);
options.format_version = static_cast<uint32_t>(jformat_version); options.format_version = static_cast<uint32_t>(jformat_version);
options.enable_index_compression = static_cast<bool>(jenable_index_compression); options.enable_index_compression =
static_cast<bool>(jenable_index_compression);
options.block_align = static_cast<bool>(jblock_align); options.block_align = static_cast<bool>(jblock_align);
options.index_shortening = options.index_shortening =
ROCKSDB_NAMESPACE::IndexShorteningModeJni::toCppIndexShorteningMode( ROCKSDB_NAMESPACE::IndexShorteningModeJni::toCppIndexShorteningMode(

@ -7,15 +7,15 @@
// ROCKSDB_NAMESPACE::TableFilter. // ROCKSDB_NAMESPACE::TableFilter.
#include "rocksjni/table_filter_jnicallback.h" #include "rocksjni/table_filter_jnicallback.h"
#include "rocksjni/portal.h" #include "rocksjni/portal.h"
namespace ROCKSDB_NAMESPACE { namespace ROCKSDB_NAMESPACE {
TableFilterJniCallback::TableFilterJniCallback( TableFilterJniCallback::TableFilterJniCallback(JNIEnv* env,
JNIEnv* env, jobject jtable_filter) jobject jtable_filter)
: JniCallback(env, jtable_filter) { : JniCallback(env, jtable_filter) {
m_jfilter_methodid = m_jfilter_methodid = AbstractTableFilterJni::getFilterMethod(env);
AbstractTableFilterJni::getFilterMethod(env); if (m_jfilter_methodid == nullptr) {
if(m_jfilter_methodid == nullptr) {
// exception thrown: NoSuchMethodException or OutOfMemoryError // exception thrown: NoSuchMethodException or OutOfMemoryError
return; return;
} }

@ -10,6 +10,7 @@
#define JAVA_ROCKSJNI_TABLE_FILTER_JNICALLBACK_H_ #define JAVA_ROCKSJNI_TABLE_FILTER_JNICALLBACK_H_
#include <jni.h> #include <jni.h>
#include <functional> #include <functional>
#include <memory> #include <memory>
@ -20,15 +21,14 @@ namespace ROCKSDB_NAMESPACE {
class TableFilterJniCallback : public JniCallback { class TableFilterJniCallback : public JniCallback {
public: public:
TableFilterJniCallback( TableFilterJniCallback(JNIEnv* env, jobject jtable_filter);
JNIEnv* env, jobject jtable_filter); std::function<bool(const ROCKSDB_NAMESPACE::TableProperties&)>
std::function<bool(const ROCKSDB_NAMESPACE::TableProperties&)> GetTableFilterFunction();
GetTableFilterFunction();
private:
private: jmethodID m_jfilter_methodid;
jmethodID m_jfilter_methodid; std::function<bool(const ROCKSDB_NAMESPACE::TableProperties&)>
std::function<bool(const ROCKSDB_NAMESPACE::TableProperties&)> m_table_filter_function;
m_table_filter_function;
}; };
} // namespace ROCKSDB_NAMESPACE } // namespace ROCKSDB_NAMESPACE

@ -6,11 +6,12 @@
// This file implements the "bridge" between Java and C++ and enables // This file implements the "bridge" between Java and C++ and enables
// calling c++ ROCKSDB_NAMESPACE::ThreadStatus methods from Java side. // calling c++ ROCKSDB_NAMESPACE::ThreadStatus methods from Java side.
#include "rocksdb/thread_status.h"
#include <jni.h> #include <jni.h>
#include "portal.h"
#include "include/org_rocksdb_ThreadStatus.h" #include "include/org_rocksdb_ThreadStatus.h"
#include "rocksdb/thread_status.h" #include "portal.h"
/* /*
* Class: org_rocksdb_ThreadStatus * Class: org_rocksdb_ThreadStatus
@ -42,8 +43,8 @@ jstring Java_org_rocksdb_ThreadStatus_getOperationName(
* Method: microsToStringNative * Method: microsToStringNative
* Signature: (J)Ljava/lang/String; * Signature: (J)Ljava/lang/String;
*/ */
jstring Java_org_rocksdb_ThreadStatus_microsToStringNative( jstring Java_org_rocksdb_ThreadStatus_microsToStringNative(JNIEnv* env, jclass,
JNIEnv* env, jclass, jlong jmicros) { jlong jmicros) {
auto str = ROCKSDB_NAMESPACE::ThreadStatus::MicrosToString( auto str = ROCKSDB_NAMESPACE::ThreadStatus::MicrosToString(
static_cast<uint64_t>(jmicros)); static_cast<uint64_t>(jmicros));
return ROCKSDB_NAMESPACE::JniUtil::toJavaString(env, &str, true); return ROCKSDB_NAMESPACE::JniUtil::toJavaString(env, &str, true);
@ -84,8 +85,7 @@ jstring Java_org_rocksdb_ThreadStatus_getOperationPropertyName(
jobject Java_org_rocksdb_ThreadStatus_interpretOperationProperties( jobject Java_org_rocksdb_ThreadStatus_interpretOperationProperties(
JNIEnv* env, jclass, jbyte joperation_type_value, JNIEnv* env, jclass, jbyte joperation_type_value,
jlongArray joperation_properties) { jlongArray joperation_properties) {
// convert joperation_properties
//convert joperation_properties
const jsize len = env->GetArrayLength(joperation_properties); const jsize len = env->GetArrayLength(joperation_properties);
const std::unique_ptr<uint64_t[]> op_properties(new uint64_t[len]); const std::unique_ptr<uint64_t[]> op_properties(new uint64_t[len]);
jlong* jop = env->GetLongArrayElements(joperation_properties, nullptr); jlong* jop = env->GetLongArrayElements(joperation_properties, nullptr);
@ -117,8 +117,8 @@ jobject Java_org_rocksdb_ThreadStatus_interpretOperationProperties(
* Method: getStateName * Method: getStateName
* Signature: (B)Ljava/lang/String; * Signature: (B)Ljava/lang/String;
*/ */
jstring Java_org_rocksdb_ThreadStatus_getStateName( jstring Java_org_rocksdb_ThreadStatus_getStateName(JNIEnv* env, jclass,
JNIEnv* env, jclass, jbyte jstate_type_value) { jbyte jstate_type_value) {
auto name = ROCKSDB_NAMESPACE::ThreadStatus::GetStateName( auto name = ROCKSDB_NAMESPACE::ThreadStatus::GetStateName(
ROCKSDB_NAMESPACE::StateTypeJni::toCppStateType(jstate_type_value)); ROCKSDB_NAMESPACE::StateTypeJni::toCppStateType(jstate_type_value));
return ROCKSDB_NAMESPACE::JniUtil::toJavaString(env, &name, true); return ROCKSDB_NAMESPACE::JniUtil::toJavaString(env, &name, true);

@ -17,8 +17,8 @@
* Method: createNewTraceWriter * Method: createNewTraceWriter
* Signature: ()J * Signature: ()J
*/ */
jlong Java_org_rocksdb_AbstractTraceWriter_createNewTraceWriter( jlong Java_org_rocksdb_AbstractTraceWriter_createNewTraceWriter(JNIEnv* env,
JNIEnv* env, jobject jobj) { jobject jobj) {
auto* trace_writer = new ROCKSDB_NAMESPACE::TraceWriterJniCallback(env, jobj); auto* trace_writer = new ROCKSDB_NAMESPACE::TraceWriterJniCallback(env, jobj);
return GET_CPLUSPLUS_POINTER(trace_writer); return GET_CPLUSPLUS_POINTER(trace_writer);
} }

@ -7,29 +7,29 @@
// ROCKSDB_NAMESPACE::TraceWriter. // ROCKSDB_NAMESPACE::TraceWriter.
#include "rocksjni/trace_writer_jnicallback.h" #include "rocksjni/trace_writer_jnicallback.h"
#include "rocksjni/portal.h" #include "rocksjni/portal.h"
namespace ROCKSDB_NAMESPACE { namespace ROCKSDB_NAMESPACE {
TraceWriterJniCallback::TraceWriterJniCallback( TraceWriterJniCallback::TraceWriterJniCallback(JNIEnv* env,
JNIEnv* env, jobject jtrace_writer) jobject jtrace_writer)
: JniCallback(env, jtrace_writer) { : JniCallback(env, jtrace_writer) {
m_jwrite_proxy_methodid = m_jwrite_proxy_methodid = AbstractTraceWriterJni::getWriteProxyMethodId(env);
AbstractTraceWriterJni::getWriteProxyMethodId(env); if (m_jwrite_proxy_methodid == nullptr) {
if(m_jwrite_proxy_methodid == nullptr) {
// exception thrown: NoSuchMethodException or OutOfMemoryError // exception thrown: NoSuchMethodException or OutOfMemoryError
return; return;
} }
m_jclose_writer_proxy_methodid = m_jclose_writer_proxy_methodid =
AbstractTraceWriterJni::getCloseWriterProxyMethodId(env); AbstractTraceWriterJni::getCloseWriterProxyMethodId(env);
if(m_jclose_writer_proxy_methodid == nullptr) { if (m_jclose_writer_proxy_methodid == nullptr) {
// exception thrown: NoSuchMethodException or OutOfMemoryError // exception thrown: NoSuchMethodException or OutOfMemoryError
return; return;
} }
m_jget_file_size_methodid = m_jget_file_size_methodid =
AbstractTraceWriterJni::getGetFileSizeMethodId(env); AbstractTraceWriterJni::getGetFileSizeMethodId(env);
if(m_jget_file_size_methodid == nullptr) { if (m_jget_file_size_methodid == nullptr) {
// exception thrown: NoSuchMethodException or OutOfMemoryError // exception thrown: NoSuchMethodException or OutOfMemoryError
return; return;
} }
@ -42,21 +42,22 @@ Status TraceWriterJniCallback::Write(const Slice& data) {
return Status::IOError("Unable to attach JNI Environment"); return Status::IOError("Unable to attach JNI Environment");
} }
jshort jstatus = env->CallShortMethod(m_jcallback_obj, jshort jstatus =
m_jwrite_proxy_methodid, env->CallShortMethod(m_jcallback_obj, m_jwrite_proxy_methodid, &data);
&data);
if(env->ExceptionCheck()) { if (env->ExceptionCheck()) {
// exception thrown from CallShortMethod // exception thrown from CallShortMethod
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
return Status::IOError("Unable to call AbstractTraceWriter#writeProxy(long)"); return Status::IOError(
"Unable to call AbstractTraceWriter#writeProxy(long)");
} }
// unpack status code and status sub-code from jstatus // unpack status code and status sub-code from jstatus
jbyte jcode_value = (jstatus >> 8) & 0xFF; jbyte jcode_value = (jstatus >> 8) & 0xFF;
jbyte jsub_code_value = jstatus & 0xFF; jbyte jsub_code_value = jstatus & 0xFF;
std::unique_ptr<Status> s = StatusJni::toCppStatus(jcode_value, jsub_code_value); std::unique_ptr<Status> s =
StatusJni::toCppStatus(jcode_value, jsub_code_value);
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
@ -70,20 +71,22 @@ Status TraceWriterJniCallback::Close() {
return Status::IOError("Unable to attach JNI Environment"); return Status::IOError("Unable to attach JNI Environment");
} }
jshort jstatus = env->CallShortMethod(m_jcallback_obj, jshort jstatus =
m_jclose_writer_proxy_methodid); env->CallShortMethod(m_jcallback_obj, m_jclose_writer_proxy_methodid);
if(env->ExceptionCheck()) { if (env->ExceptionCheck()) {
// exception thrown from CallShortMethod // exception thrown from CallShortMethod
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
return Status::IOError("Unable to call AbstractTraceWriter#closeWriterProxy()"); return Status::IOError(
"Unable to call AbstractTraceWriter#closeWriterProxy()");
} }
// unpack status code and status sub-code from jstatus // unpack status code and status sub-code from jstatus
jbyte code_value = (jstatus >> 8) & 0xFF; jbyte code_value = (jstatus >> 8) & 0xFF;
jbyte sub_code_value = jstatus & 0xFF; jbyte sub_code_value = jstatus & 0xFF;
std::unique_ptr<Status> s = StatusJni::toCppStatus(code_value, sub_code_value); std::unique_ptr<Status> s =
StatusJni::toCppStatus(code_value, sub_code_value);
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
@ -97,10 +100,10 @@ uint64_t TraceWriterJniCallback::GetFileSize() {
return 0; return 0;
} }
jlong jfile_size = env->CallLongMethod(m_jcallback_obj, jlong jfile_size =
m_jget_file_size_methodid); env->CallLongMethod(m_jcallback_obj, m_jget_file_size_methodid);
if(env->ExceptionCheck()) { if (env->ExceptionCheck()) {
// exception thrown from CallLongMethod // exception thrown from CallLongMethod
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);

@ -10,6 +10,7 @@
#define JAVA_ROCKSJNI_TRACE_WRITER_JNICALLBACK_H_ #define JAVA_ROCKSJNI_TRACE_WRITER_JNICALLBACK_H_
#include <jni.h> #include <jni.h>
#include <memory> #include <memory>
#include "rocksdb/trace_reader_writer.h" #include "rocksdb/trace_reader_writer.h"
@ -19,16 +20,15 @@ namespace ROCKSDB_NAMESPACE {
class TraceWriterJniCallback : public JniCallback, public TraceWriter { class TraceWriterJniCallback : public JniCallback, public TraceWriter {
public: public:
TraceWriterJniCallback( TraceWriterJniCallback(JNIEnv* env, jobject jtrace_writer);
JNIEnv* env, jobject jtrace_writer); virtual Status Write(const Slice& data);
virtual Status Write(const Slice& data); virtual Status Close();
virtual Status Close(); virtual uint64_t GetFileSize();
virtual uint64_t GetFileSize();
private: private:
jmethodID m_jwrite_proxy_methodid; jmethodID m_jwrite_proxy_methodid;
jmethodID m_jclose_writer_proxy_methodid; jmethodID m_jclose_writer_proxy_methodid;
jmethodID m_jget_file_size_methodid; jmethodID m_jget_file_size_methodid;
}; };
} // namespace ROCKSDB_NAMESPACE } // namespace ROCKSDB_NAMESPACE

@ -190,8 +190,9 @@ jbyteArray txn_get_helper(JNIEnv* env, const FnGet& fn_get,
// exception thrown: OutOfMemoryError // exception thrown: OutOfMemoryError
return nullptr; return nullptr;
} }
env->SetByteArrayRegion(jret_value, 0, static_cast<jsize>(value.size()), env->SetByteArrayRegion(
const_cast<jbyte*>(reinterpret_cast<const jbyte*>(value.c_str()))); jret_value, 0, static_cast<jsize>(value.size()),
const_cast<jbyte*>(reinterpret_cast<const jbyte*>(value.c_str())));
if (env->ExceptionCheck()) { if (env->ExceptionCheck()) {
// exception thrown: ArrayIndexOutOfBoundsException // exception thrown: ArrayIndexOutOfBoundsException
return nullptr; return nullptr;
@ -366,7 +367,8 @@ jobjectArray txn_multi_get_helper(JNIEnv* env, const FnMultiGet& fn_multi_get,
env->SetByteArrayRegion( env->SetByteArrayRegion(
jentry_value, 0, static_cast<jsize>(value_parts[i].size()), jentry_value, 0, static_cast<jsize>(value_parts[i].size()),
const_cast<jbyte*>(reinterpret_cast<const jbyte*>(value_parts[i].c_str()))); const_cast<jbyte*>(
reinterpret_cast<const jbyte*>(value_parts[i].c_str())));
if (env->ExceptionCheck()) { if (env->ExceptionCheck()) {
// exception thrown: ArrayIndexOutOfBoundsException // exception thrown: ArrayIndexOutOfBoundsException
env->DeleteLocalRef(jentry_value); env->DeleteLocalRef(jentry_value);
@ -647,7 +649,7 @@ void txn_write_kv_parts_helper(JNIEnv* env,
const jobjectArray& jvalue_parts, const jobjectArray& jvalue_parts,
const jint& jvalue_parts_len) { const jint& jvalue_parts_len) {
#ifndef DEBUG #ifndef DEBUG
(void) jvalue_parts_len; (void)jvalue_parts_len;
#else #else
assert(jkey_parts_len == jvalue_parts_len); assert(jkey_parts_len == jvalue_parts_len);
#endif #endif

@ -26,8 +26,8 @@
* Signature: (JJLjava/lang/String;)J * Signature: (JJLjava/lang/String;)J
*/ */
jlong Java_org_rocksdb_TransactionDB_open__JJLjava_lang_String_2( jlong Java_org_rocksdb_TransactionDB_open__JJLjava_lang_String_2(
JNIEnv* env, jclass, jlong joptions_handle, JNIEnv* env, jclass, jlong joptions_handle, jlong jtxn_db_options_handle,
jlong jtxn_db_options_handle, jstring jdb_path) { jstring jdb_path) {
auto* options = auto* options =
reinterpret_cast<ROCKSDB_NAMESPACE::Options*>(joptions_handle); reinterpret_cast<ROCKSDB_NAMESPACE::Options*>(joptions_handle);
auto* txn_db_options = auto* txn_db_options =
@ -57,8 +57,8 @@ jlong Java_org_rocksdb_TransactionDB_open__JJLjava_lang_String_2(
* Signature: (JJLjava/lang/String;[[B[J)[J * Signature: (JJLjava/lang/String;[[B[J)[J
*/ */
jlongArray Java_org_rocksdb_TransactionDB_open__JJLjava_lang_String_2_3_3B_3J( jlongArray Java_org_rocksdb_TransactionDB_open__JJLjava_lang_String_2_3_3B_3J(
JNIEnv* env, jclass, jlong jdb_options_handle, JNIEnv* env, jclass, jlong jdb_options_handle, jlong jtxn_db_options_handle,
jlong jtxn_db_options_handle, jstring jdb_path, jobjectArray jcolumn_names, jstring jdb_path, jobjectArray jcolumn_names,
jlongArray jcolumn_options_handles) { jlongArray jcolumn_options_handles) {
const char* db_path = env->GetStringUTFChars(jdb_path, nullptr); const char* db_path = env->GetStringUTFChars(jdb_path, nullptr);
if (db_path == nullptr) { if (db_path == nullptr) {
@ -161,8 +161,8 @@ jlongArray Java_org_rocksdb_TransactionDB_open__JJLjava_lang_String_2_3_3B_3J(
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_TransactionDB_disposeInternal( void Java_org_rocksdb_TransactionDB_disposeInternal(JNIEnv*, jobject,
JNIEnv*, jobject, jlong jhandle) { jlong jhandle) {
auto* txn_db = reinterpret_cast<ROCKSDB_NAMESPACE::TransactionDB*>(jhandle); auto* txn_db = reinterpret_cast<ROCKSDB_NAMESPACE::TransactionDB*>(jhandle);
assert(txn_db != nullptr); assert(txn_db != nullptr);
delete txn_db; delete txn_db;
@ -173,8 +173,8 @@ void Java_org_rocksdb_TransactionDB_disposeInternal(
* Method: closeDatabase * Method: closeDatabase
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_TransactionDB_closeDatabase( void Java_org_rocksdb_TransactionDB_closeDatabase(JNIEnv* env, jclass,
JNIEnv* env, jclass, jlong jhandle) { jlong jhandle) {
auto* txn_db = reinterpret_cast<ROCKSDB_NAMESPACE::TransactionDB*>(jhandle); auto* txn_db = reinterpret_cast<ROCKSDB_NAMESPACE::TransactionDB*>(jhandle);
assert(txn_db != nullptr); assert(txn_db != nullptr);
ROCKSDB_NAMESPACE::Status s = txn_db->Close(); ROCKSDB_NAMESPACE::Status s = txn_db->Close();
@ -270,8 +270,9 @@ jlong Java_org_rocksdb_TransactionDB_beginTransaction_1withOld__JJJJ(
* Method: getTransactionByName * Method: getTransactionByName
* Signature: (JLjava/lang/String;)J * Signature: (JLjava/lang/String;)J
*/ */
jlong Java_org_rocksdb_TransactionDB_getTransactionByName( jlong Java_org_rocksdb_TransactionDB_getTransactionByName(JNIEnv* env, jobject,
JNIEnv* env, jobject, jlong jhandle, jstring jname) { jlong jhandle,
jstring jname) {
auto* txn_db = reinterpret_cast<ROCKSDB_NAMESPACE::TransactionDB*>(jhandle); auto* txn_db = reinterpret_cast<ROCKSDB_NAMESPACE::TransactionDB*>(jhandle);
const char* name = env->GetStringUTFChars(jname, nullptr); const char* name = env->GetStringUTFChars(jname, nullptr);
if (name == nullptr) { if (name == nullptr) {
@ -323,8 +324,8 @@ jlongArray Java_org_rocksdb_TransactionDB_getAllPreparedTransactions(
* Method: getLockStatusData * Method: getLockStatusData
* Signature: (J)Ljava/util/Map; * Signature: (J)Ljava/util/Map;
*/ */
jobject Java_org_rocksdb_TransactionDB_getLockStatusData( jobject Java_org_rocksdb_TransactionDB_getLockStatusData(JNIEnv* env, jobject,
JNIEnv* env, jobject, jlong jhandle) { jlong jhandle) {
auto* txn_db = reinterpret_cast<ROCKSDB_NAMESPACE::TransactionDB*>(jhandle); auto* txn_db = reinterpret_cast<ROCKSDB_NAMESPACE::TransactionDB*>(jhandle);
const std::unordered_multimap<uint32_t, ROCKSDB_NAMESPACE::KeyLockInfo> const std::unordered_multimap<uint32_t, ROCKSDB_NAMESPACE::KeyLockInfo>
lock_status_data = txn_db->GetLockStatusData(); lock_status_data = txn_db->GetLockStatusData();

@ -6,12 +6,13 @@
// This file implements the "bridge" between Java and C++ and enables // This file implements the "bridge" between Java and C++ and enables
// calling c++ ROCKSDB_NAMESPACE::Iterator methods from Java side. // calling c++ ROCKSDB_NAMESPACE::Iterator methods from Java side.
#include "rocksdb/transaction_log.h"
#include <jni.h> #include <jni.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "include/org_rocksdb_TransactionLogIterator.h" #include "include/org_rocksdb_TransactionLogIterator.h"
#include "rocksdb/transaction_log.h"
#include "rocksjni/portal.h" #include "rocksjni/portal.h"
/* /*

@ -13,8 +13,9 @@
namespace ROCKSDB_NAMESPACE { namespace ROCKSDB_NAMESPACE {
TransactionNotifierJniCallback::TransactionNotifierJniCallback(JNIEnv* env, TransactionNotifierJniCallback::TransactionNotifierJniCallback(
jobject jtransaction_notifier) : JniCallback(env, jtransaction_notifier) { JNIEnv* env, jobject jtransaction_notifier)
: JniCallback(env, jtransaction_notifier) {
// we cache the method id for the JNI callback // we cache the method id for the JNI callback
m_jsnapshot_created_methodID = m_jsnapshot_created_methodID =
AbstractTransactionNotifierJni::getSnapshotCreatedMethodId(env); AbstractTransactionNotifierJni::getSnapshotCreatedMethodId(env);
@ -29,7 +30,7 @@ void TransactionNotifierJniCallback::SnapshotCreated(
env->CallVoidMethod(m_jcallback_obj, m_jsnapshot_created_methodID, env->CallVoidMethod(m_jcallback_obj, m_jsnapshot_created_methodID,
GET_CPLUSPLUS_POINTER(newSnapshot)); GET_CPLUSPLUS_POINTER(newSnapshot));
if(env->ExceptionCheck()) { if (env->ExceptionCheck()) {
// exception thrown from CallVoidMethod // exception thrown from CallVoidMethod
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);

@ -28,8 +28,8 @@ namespace ROCKSDB_NAMESPACE {
* presented to the callback. This could be revisited in future * presented to the callback. This could be revisited in future
* if performance is lacking. * if performance is lacking.
*/ */
class TransactionNotifierJniCallback: public JniCallback, class TransactionNotifierJniCallback : public JniCallback,
public TransactionNotifier { public TransactionNotifier {
public: public:
TransactionNotifierJniCallback(JNIEnv* env, jobject jtransaction_notifier); TransactionNotifierJniCallback(JNIEnv* env, jobject jtransaction_notifier);
virtual void SnapshotCreated(const Snapshot* newSnapshot); virtual void SnapshotCreated(const Snapshot* newSnapshot);

@ -25,9 +25,9 @@
* Method: open * Method: open
* Signature: (JLjava/lang/String;IZ)J * Signature: (JLjava/lang/String;IZ)J
*/ */
jlong Java_org_rocksdb_TtlDB_open( jlong Java_org_rocksdb_TtlDB_open(JNIEnv* env, jclass, jlong joptions_handle,
JNIEnv* env, jclass, jlong joptions_handle, jstring jdb_path, jint jttl, jstring jdb_path, jint jttl,
jboolean jread_only) { jboolean jread_only) {
const char* db_path = env->GetStringUTFChars(jdb_path, nullptr); const char* db_path = env->GetStringUTFChars(jdb_path, nullptr);
if (db_path == nullptr) { if (db_path == nullptr) {
// exception thrown: OutOfMemoryError // exception thrown: OutOfMemoryError
@ -55,10 +55,11 @@ jlong Java_org_rocksdb_TtlDB_open(
* Method: openCF * Method: openCF
* Signature: (JLjava/lang/String;[[B[J[IZ)[J * Signature: (JLjava/lang/String;[[B[J[IZ)[J
*/ */
jlongArray Java_org_rocksdb_TtlDB_openCF( jlongArray Java_org_rocksdb_TtlDB_openCF(JNIEnv* env, jclass, jlong jopt_handle,
JNIEnv* env, jclass, jlong jopt_handle, jstring jdb_path, jstring jdb_path,
jobjectArray jcolumn_names, jlongArray jcolumn_options, jobjectArray jcolumn_names,
jintArray jttls, jboolean jread_only) { jlongArray jcolumn_options,
jintArray jttls, jboolean jread_only) {
const char* db_path = env->GetStringUTFChars(jdb_path, nullptr); const char* db_path = env->GetStringUTFChars(jdb_path, nullptr);
if (db_path == nullptr) { if (db_path == nullptr) {
// exception thrown: OutOfMemoryError // exception thrown: OutOfMemoryError
@ -153,8 +154,7 @@ jlongArray Java_org_rocksdb_TtlDB_openCF(
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_TtlDB_disposeInternal( void Java_org_rocksdb_TtlDB_disposeInternal(JNIEnv*, jobject, jlong jhandle) {
JNIEnv*, jobject, jlong jhandle) {
auto* ttl_db = reinterpret_cast<ROCKSDB_NAMESPACE::DBWithTTL*>(jhandle); auto* ttl_db = reinterpret_cast<ROCKSDB_NAMESPACE::DBWithTTL*>(jhandle);
assert(ttl_db != nullptr); assert(ttl_db != nullptr);
delete ttl_db; delete ttl_db;
@ -165,14 +165,15 @@ void Java_org_rocksdb_TtlDB_disposeInternal(
* Method: closeDatabase * Method: closeDatabase
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_TtlDB_closeDatabase( void Java_org_rocksdb_TtlDB_closeDatabase(JNIEnv* /* env */, jclass,
JNIEnv* /* env */, jclass, jlong /* jhandle */) { jlong /* jhandle */) {
// auto* ttl_db = reinterpret_cast<ROCKSDB_NAMESPACE::DBWithTTL*>(jhandle); // auto* ttl_db = reinterpret_cast<ROCKSDB_NAMESPACE::DBWithTTL*>(jhandle);
// assert(ttl_db != nullptr); // assert(ttl_db != nullptr);
// ROCKSDB_NAMESPACE::Status s = ttl_db->Close(); // ROCKSDB_NAMESPACE::Status s = ttl_db->Close();
// ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s); // ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
//TODO(AR) this is disabled until https://github.com/facebook/rocksdb/issues/4818 is resolved! // TODO(AR) this is disabled until
// https://github.com/facebook/rocksdb/issues/4818 is resolved!
} }
/* /*
@ -180,9 +181,11 @@ void Java_org_rocksdb_TtlDB_closeDatabase(
* Method: createColumnFamilyWithTtl * Method: createColumnFamilyWithTtl
* Signature: (JLorg/rocksdb/ColumnFamilyDescriptor;[BJI)J; * Signature: (JLorg/rocksdb/ColumnFamilyDescriptor;[BJI)J;
*/ */
jlong Java_org_rocksdb_TtlDB_createColumnFamilyWithTtl( jlong Java_org_rocksdb_TtlDB_createColumnFamilyWithTtl(JNIEnv* env, jobject,
JNIEnv* env, jobject, jlong jdb_handle, jbyteArray jcolumn_name, jlong jdb_handle,
jlong jcolumn_options, jint jttl) { jbyteArray jcolumn_name,
jlong jcolumn_options,
jint jttl) {
jbyte* cfname = env->GetByteArrayElements(jcolumn_name, nullptr); jbyte* cfname = env->GetByteArrayElements(jcolumn_name, nullptr);
if (cfname == nullptr) { if (cfname == nullptr) {
// exception thrown: OutOfMemoryError // exception thrown: OutOfMemoryError

@ -17,8 +17,8 @@
* Method: createNewWalFilter * Method: createNewWalFilter
* Signature: ()J * Signature: ()J
*/ */
jlong Java_org_rocksdb_AbstractWalFilter_createNewWalFilter( jlong Java_org_rocksdb_AbstractWalFilter_createNewWalFilter(JNIEnv* env,
JNIEnv* env, jobject jobj) { jobject jobj) {
auto* wal_filter = new ROCKSDB_NAMESPACE::WalFilterJniCallback(env, jobj); auto* wal_filter = new ROCKSDB_NAMESPACE::WalFilterJniCallback(env, jobj);
return GET_CPLUSPLUS_POINTER(wal_filter); return GET_CPLUSPLUS_POINTER(wal_filter);
} }

@ -12,24 +12,23 @@
#include "rocksjni/portal.h" #include "rocksjni/portal.h"
namespace ROCKSDB_NAMESPACE { namespace ROCKSDB_NAMESPACE {
WalFilterJniCallback::WalFilterJniCallback( WalFilterJniCallback::WalFilterJniCallback(JNIEnv* env, jobject jwal_filter)
JNIEnv* env, jobject jwal_filter)
: JniCallback(env, jwal_filter) { : JniCallback(env, jwal_filter) {
// Note: The name of a WalFilter will not change during it's lifetime, // Note: The name of a WalFilter will not change during it's lifetime,
// so we cache it in a global var // so we cache it in a global var
jmethodID jname_mid = AbstractWalFilterJni::getNameMethodId(env); jmethodID jname_mid = AbstractWalFilterJni::getNameMethodId(env);
if(jname_mid == nullptr) { if (jname_mid == nullptr) {
// exception thrown: NoSuchMethodException or OutOfMemoryError // exception thrown: NoSuchMethodException or OutOfMemoryError
return; return;
} }
jstring jname = (jstring)env->CallObjectMethod(m_jcallback_obj, jname_mid); jstring jname = (jstring)env->CallObjectMethod(m_jcallback_obj, jname_mid);
if(env->ExceptionCheck()) { if (env->ExceptionCheck()) {
// exception thrown // exception thrown
return; return;
} }
jboolean has_exception = JNI_FALSE; jboolean has_exception = JNI_FALSE;
m_name = JniUtil::copyString(env, jname, m_name = JniUtil::copyString(env, jname,
&has_exception); // also releases jname &has_exception); // also releases jname
if (has_exception == JNI_TRUE) { if (has_exception == JNI_TRUE) {
// exception thrown // exception thrown
return; return;
@ -37,14 +36,14 @@ WalFilterJniCallback::WalFilterJniCallback(
m_column_family_log_number_map_mid = m_column_family_log_number_map_mid =
AbstractWalFilterJni::getColumnFamilyLogNumberMapMethodId(env); AbstractWalFilterJni::getColumnFamilyLogNumberMapMethodId(env);
if(m_column_family_log_number_map_mid == nullptr) { if (m_column_family_log_number_map_mid == nullptr) {
// exception thrown: NoSuchMethodException or OutOfMemoryError // exception thrown: NoSuchMethodException or OutOfMemoryError
return; return;
} }
m_log_record_found_proxy_mid = m_log_record_found_proxy_mid =
AbstractWalFilterJni::getLogRecordFoundProxyMethodId(env); AbstractWalFilterJni::getLogRecordFoundProxyMethodId(env);
if(m_log_record_found_proxy_mid == nullptr) { if (m_log_record_found_proxy_mid == nullptr) {
// exception thrown: NoSuchMethodException or OutOfMemoryError // exception thrown: NoSuchMethodException or OutOfMemoryError
return; return;
} }
@ -63,7 +62,7 @@ void WalFilterJniCallback::ColumnFamilyLogNumberMap(
ROCKSDB_NAMESPACE::HashMapJni::fromCppMap(env, &cf_lognumber_map); ROCKSDB_NAMESPACE::HashMapJni::fromCppMap(env, &cf_lognumber_map);
if (jcf_lognumber_map == nullptr) { if (jcf_lognumber_map == nullptr) {
// exception occurred // exception occurred
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
return; return;
} }
@ -72,21 +71,19 @@ void WalFilterJniCallback::ColumnFamilyLogNumberMap(
ROCKSDB_NAMESPACE::HashMapJni::fromCppMap(env, &cf_name_id_map); ROCKSDB_NAMESPACE::HashMapJni::fromCppMap(env, &cf_name_id_map);
if (jcf_name_id_map == nullptr) { if (jcf_name_id_map == nullptr) {
// exception occurred // exception occurred
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
env->DeleteLocalRef(jcf_lognumber_map); env->DeleteLocalRef(jcf_lognumber_map);
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
return; return;
} }
env->CallVoidMethod(m_jcallback_obj, env->CallVoidMethod(m_jcallback_obj, m_column_family_log_number_map_mid,
m_column_family_log_number_map_mid, jcf_lognumber_map, jcf_name_id_map);
jcf_lognumber_map,
jcf_name_id_map);
env->DeleteLocalRef(jcf_lognumber_map); env->DeleteLocalRef(jcf_lognumber_map);
env->DeleteLocalRef(jcf_name_id_map); env->DeleteLocalRef(jcf_name_id_map);
if(env->ExceptionCheck()) { if (env->ExceptionCheck()) {
// exception thrown from CallVoidMethod // exception thrown from CallVoidMethod
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
} }
@ -94,21 +91,21 @@ void WalFilterJniCallback::ColumnFamilyLogNumberMap(
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
} }
WalFilter::WalProcessingOption WalFilterJniCallback::LogRecordFound( WalFilter::WalProcessingOption WalFilterJniCallback::LogRecordFound(
unsigned long long log_number, const std::string& log_file_name, unsigned long long log_number, const std::string& log_file_name,
const WriteBatch& batch, WriteBatch* new_batch, bool* batch_changed) { const WriteBatch& batch, WriteBatch* new_batch, bool* batch_changed) {
jboolean attached_thread = JNI_FALSE; jboolean attached_thread = JNI_FALSE;
JNIEnv* env = getJniEnv(&attached_thread); JNIEnv* env = getJniEnv(&attached_thread);
if (env == nullptr) { if (env == nullptr) {
return WalFilter::WalProcessingOption::kCorruptedRecord; return WalFilter::WalProcessingOption::kCorruptedRecord;
} }
jstring jlog_file_name = JniUtil::toJavaString(env, &log_file_name); jstring jlog_file_name = JniUtil::toJavaString(env, &log_file_name);
if (jlog_file_name == nullptr) { if (jlog_file_name == nullptr) {
// exception occcurred // exception occcurred
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
return WalFilter::WalProcessingOption::kCorruptedRecord; return WalFilter::WalProcessingOption::kCorruptedRecord;
} }
jshort jlog_record_found_result = env->CallShortMethod( jshort jlog_record_found_result = env->CallShortMethod(
@ -122,7 +119,7 @@ void WalFilterJniCallback::ColumnFamilyLogNumberMap(
// exception thrown from CallShortMethod // exception thrown from CallShortMethod
env->ExceptionDescribe(); // print out exception to stderr env->ExceptionDescribe(); // print out exception to stderr
releaseJniEnv(attached_thread); releaseJniEnv(attached_thread);
return WalFilter::WalProcessingOption::kCorruptedRecord; return WalFilter::WalProcessingOption::kCorruptedRecord;
} }
// unpack WalProcessingOption and batch_changed from jlog_record_found_result // unpack WalProcessingOption and batch_changed from jlog_record_found_result
@ -137,8 +134,6 @@ void WalFilterJniCallback::ColumnFamilyLogNumberMap(
jwal_processing_option_value); jwal_processing_option_value);
} }
const char* WalFilterJniCallback::Name() const { const char* WalFilterJniCallback::Name() const { return m_name.get(); }
return m_name.get();
}
} // namespace ROCKSDB_NAMESPACE } // namespace ROCKSDB_NAMESPACE

@ -10,6 +10,7 @@
#define JAVA_ROCKSJNI_WAL_FILTER_JNICALLBACK_H_ #define JAVA_ROCKSJNI_WAL_FILTER_JNICALLBACK_H_
#include <jni.h> #include <jni.h>
#include <map> #include <map>
#include <memory> #include <memory>
#include <string> #include <string>
@ -21,20 +22,19 @@ namespace ROCKSDB_NAMESPACE {
class WalFilterJniCallback : public JniCallback, public WalFilter { class WalFilterJniCallback : public JniCallback, public WalFilter {
public: public:
WalFilterJniCallback( WalFilterJniCallback(JNIEnv* env, jobject jwal_filter);
JNIEnv* env, jobject jwal_filter); virtual void ColumnFamilyLogNumberMap(
virtual void ColumnFamilyLogNumberMap( const std::map<uint32_t, uint64_t>& cf_lognumber_map,
const std::map<uint32_t, uint64_t>& cf_lognumber_map, const std::map<std::string, uint32_t>& cf_name_id_map);
const std::map<std::string, uint32_t>& cf_name_id_map); virtual WalFilter::WalProcessingOption LogRecordFound(
virtual WalFilter::WalProcessingOption LogRecordFound( unsigned long long log_number, const std::string& log_file_name,
unsigned long long log_number, const std::string& log_file_name, const WriteBatch& batch, WriteBatch* new_batch, bool* batch_changed);
const WriteBatch& batch, WriteBatch* new_batch, bool* batch_changed); virtual const char* Name() const;
virtual const char* Name() const;
private: private:
std::unique_ptr<const char[]> m_name; std::unique_ptr<const char[]> m_name;
jmethodID m_column_family_log_number_map_mid; jmethodID m_column_family_log_number_map_mid;
jmethodID m_log_record_found_proxy_mid; jmethodID m_log_record_found_proxy_mid;
}; };
} // namespace ROCKSDB_NAMESPACE } // namespace ROCKSDB_NAMESPACE

@ -5,6 +5,8 @@
// //
// This file implements the "bridge" between Java and C++ and enables // This file implements the "bridge" between Java and C++ and enables
// calling c++ ROCKSDB_NAMESPACE::WriteBatch methods testing from Java side. // calling c++ ROCKSDB_NAMESPACE::WriteBatch methods testing from Java side.
#include "rocksdb/write_batch.h"
#include <memory> #include <memory>
#include "db/memtable.h" #include "db/memtable.h"
@ -18,7 +20,6 @@
#include "rocksdb/env.h" #include "rocksdb/env.h"
#include "rocksdb/memtablerep.h" #include "rocksdb/memtablerep.h"
#include "rocksdb/status.h" #include "rocksdb/status.h"
#include "rocksdb/write_batch.h"
#include "rocksdb/write_buffer_manager.h" #include "rocksdb/write_buffer_manager.h"
#include "rocksjni/portal.h" #include "rocksjni/portal.h"
#include "table/scoped_arena_iterator.h" #include "table/scoped_arena_iterator.h"

@ -947,6 +947,7 @@ jlongArray Java_org_rocksdb_WBWIRocksIterator_entry1(JNIEnv* env,
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_WBWIRocksIterator_refresh0(JNIEnv* env) { void Java_org_rocksdb_WBWIRocksIterator_refresh0(JNIEnv* env) {
ROCKSDB_NAMESPACE::Status s = ROCKSDB_NAMESPACE::Status::NotSupported("Refresh() is not supported"); ROCKSDB_NAMESPACE::Status s =
ROCKSDB_NAMESPACE::Status::NotSupported("Refresh() is not supported");
ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s); ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
} }

@ -34,8 +34,9 @@ jlong Java_org_rocksdb_WriteBufferManager_newWriteBufferManager(
* Method: disposeInternal * Method: disposeInternal
* Signature: (J)V * Signature: (J)V
*/ */
void Java_org_rocksdb_WriteBufferManager_disposeInternal( void Java_org_rocksdb_WriteBufferManager_disposeInternal(JNIEnv* /*env*/,
JNIEnv* /*env*/, jobject /*jobj*/, jlong jhandle) { jobject /*jobj*/,
jlong jhandle) {
auto* write_buffer_manager = auto* write_buffer_manager =
reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::WriteBufferManager>*>( reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::WriteBufferManager>*>(
jhandle); jhandle);

@ -7,58 +7,58 @@
// ROCKSDB_NAMESPACE::Comparator. // ROCKSDB_NAMESPACE::Comparator.
#include "rocksjni/writebatchhandlerjnicallback.h" #include "rocksjni/writebatchhandlerjnicallback.h"
#include "rocksjni/portal.h" #include "rocksjni/portal.h"
namespace ROCKSDB_NAMESPACE { namespace ROCKSDB_NAMESPACE {
WriteBatchHandlerJniCallback::WriteBatchHandlerJniCallback( WriteBatchHandlerJniCallback::WriteBatchHandlerJniCallback(
JNIEnv* env, jobject jWriteBatchHandler) JNIEnv* env, jobject jWriteBatchHandler)
: JniCallback(env, jWriteBatchHandler), m_env(env) { : JniCallback(env, jWriteBatchHandler), m_env(env) {
m_jPutCfMethodId = WriteBatchHandlerJni::getPutCfMethodId(env); m_jPutCfMethodId = WriteBatchHandlerJni::getPutCfMethodId(env);
if(m_jPutCfMethodId == nullptr) { if (m_jPutCfMethodId == nullptr) {
// exception thrown // exception thrown
return; return;
} }
m_jPutMethodId = WriteBatchHandlerJni::getPutMethodId(env); m_jPutMethodId = WriteBatchHandlerJni::getPutMethodId(env);
if(m_jPutMethodId == nullptr) { if (m_jPutMethodId == nullptr) {
// exception thrown // exception thrown
return; return;
} }
m_jMergeCfMethodId = WriteBatchHandlerJni::getMergeCfMethodId(env); m_jMergeCfMethodId = WriteBatchHandlerJni::getMergeCfMethodId(env);
if(m_jMergeCfMethodId == nullptr) { if (m_jMergeCfMethodId == nullptr) {
// exception thrown // exception thrown
return; return;
} }
m_jMergeMethodId = WriteBatchHandlerJni::getMergeMethodId(env); m_jMergeMethodId = WriteBatchHandlerJni::getMergeMethodId(env);
if(m_jMergeMethodId == nullptr) { if (m_jMergeMethodId == nullptr) {
// exception thrown // exception thrown
return; return;
} }
m_jDeleteCfMethodId = WriteBatchHandlerJni::getDeleteCfMethodId(env); m_jDeleteCfMethodId = WriteBatchHandlerJni::getDeleteCfMethodId(env);
if(m_jDeleteCfMethodId == nullptr) { if (m_jDeleteCfMethodId == nullptr) {
// exception thrown // exception thrown
return; return;
} }
m_jDeleteMethodId = WriteBatchHandlerJni::getDeleteMethodId(env); m_jDeleteMethodId = WriteBatchHandlerJni::getDeleteMethodId(env);
if(m_jDeleteMethodId == nullptr) { if (m_jDeleteMethodId == nullptr) {
// exception thrown // exception thrown
return; return;
} }
m_jSingleDeleteCfMethodId = m_jSingleDeleteCfMethodId =
WriteBatchHandlerJni::getSingleDeleteCfMethodId(env); WriteBatchHandlerJni::getSingleDeleteCfMethodId(env);
if(m_jSingleDeleteCfMethodId == nullptr) { if (m_jSingleDeleteCfMethodId == nullptr) {
// exception thrown // exception thrown
return; return;
} }
m_jSingleDeleteMethodId = WriteBatchHandlerJni::getSingleDeleteMethodId(env); m_jSingleDeleteMethodId = WriteBatchHandlerJni::getSingleDeleteMethodId(env);
if(m_jSingleDeleteMethodId == nullptr) { if (m_jSingleDeleteMethodId == nullptr) {
// exception thrown // exception thrown
return; return;
} }
@ -77,46 +77,46 @@ WriteBatchHandlerJniCallback::WriteBatchHandlerJniCallback(
} }
m_jLogDataMethodId = WriteBatchHandlerJni::getLogDataMethodId(env); m_jLogDataMethodId = WriteBatchHandlerJni::getLogDataMethodId(env);
if(m_jLogDataMethodId == nullptr) { if (m_jLogDataMethodId == nullptr) {
// exception thrown // exception thrown
return; return;
} }
m_jPutBlobIndexCfMethodId = m_jPutBlobIndexCfMethodId =
WriteBatchHandlerJni::getPutBlobIndexCfMethodId(env); WriteBatchHandlerJni::getPutBlobIndexCfMethodId(env);
if(m_jPutBlobIndexCfMethodId == nullptr) { if (m_jPutBlobIndexCfMethodId == nullptr) {
// exception thrown // exception thrown
return; return;
} }
m_jMarkBeginPrepareMethodId = m_jMarkBeginPrepareMethodId =
WriteBatchHandlerJni::getMarkBeginPrepareMethodId(env); WriteBatchHandlerJni::getMarkBeginPrepareMethodId(env);
if(m_jMarkBeginPrepareMethodId == nullptr) { if (m_jMarkBeginPrepareMethodId == nullptr) {
// exception thrown // exception thrown
return; return;
} }
m_jMarkEndPrepareMethodId = m_jMarkEndPrepareMethodId =
WriteBatchHandlerJni::getMarkEndPrepareMethodId(env); WriteBatchHandlerJni::getMarkEndPrepareMethodId(env);
if(m_jMarkEndPrepareMethodId == nullptr) { if (m_jMarkEndPrepareMethodId == nullptr) {
// exception thrown // exception thrown
return; return;
} }
m_jMarkNoopMethodId = WriteBatchHandlerJni::getMarkNoopMethodId(env); m_jMarkNoopMethodId = WriteBatchHandlerJni::getMarkNoopMethodId(env);
if(m_jMarkNoopMethodId == nullptr) { if (m_jMarkNoopMethodId == nullptr) {
// exception thrown // exception thrown
return; return;
} }
m_jMarkRollbackMethodId = WriteBatchHandlerJni::getMarkRollbackMethodId(env); m_jMarkRollbackMethodId = WriteBatchHandlerJni::getMarkRollbackMethodId(env);
if(m_jMarkRollbackMethodId == nullptr) { if (m_jMarkRollbackMethodId == nullptr) {
// exception thrown // exception thrown
return; return;
} }
m_jMarkCommitMethodId = WriteBatchHandlerJni::getMarkCommitMethodId(env); m_jMarkCommitMethodId = WriteBatchHandlerJni::getMarkCommitMethodId(env);
if(m_jMarkCommitMethodId == nullptr) { if (m_jMarkCommitMethodId == nullptr) {
// exception thrown // exception thrown
return; return;
} }
@ -129,7 +129,7 @@ WriteBatchHandlerJniCallback::WriteBatchHandlerJniCallback(
} }
m_jContinueMethodId = WriteBatchHandlerJni::getContinueMethodId(env); m_jContinueMethodId = WriteBatchHandlerJni::getContinueMethodId(env);
if(m_jContinueMethodId == nullptr) { if (m_jContinueMethodId == nullptr) {
// exception thrown // exception thrown
return; return;
} }
@ -137,17 +137,12 @@ WriteBatchHandlerJniCallback::WriteBatchHandlerJniCallback(
ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::PutCF( ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::PutCF(
uint32_t column_family_id, const Slice& key, const Slice& value) { uint32_t column_family_id, const Slice& key, const Slice& value) {
auto put = [this, column_family_id] ( auto put = [this, column_family_id](jbyteArray j_key, jbyteArray j_value) {
jbyteArray j_key, jbyteArray j_value) { m_env->CallVoidMethod(m_jcallback_obj, m_jPutCfMethodId,
m_env->CallVoidMethod( static_cast<jint>(column_family_id), j_key, j_value);
m_jcallback_obj,
m_jPutCfMethodId,
static_cast<jint>(column_family_id),
j_key,
j_value);
}; };
auto status = WriteBatchHandlerJniCallback::kv_op(key, value, put); auto status = WriteBatchHandlerJniCallback::kv_op(key, value, put);
if(status == nullptr) { if (status == nullptr) {
return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is
// an Exception but we don't know // an Exception but we don't know
// the ROCKSDB_NAMESPACE::Status? // the ROCKSDB_NAMESPACE::Status?
@ -157,30 +152,20 @@ ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::PutCF(
} }
void WriteBatchHandlerJniCallback::Put(const Slice& key, const Slice& value) { void WriteBatchHandlerJniCallback::Put(const Slice& key, const Slice& value) {
auto put = [this] ( auto put = [this](jbyteArray j_key, jbyteArray j_value) {
jbyteArray j_key, jbyteArray j_value) { m_env->CallVoidMethod(m_jcallback_obj, m_jPutMethodId, j_key, j_value);
m_env->CallVoidMethod(
m_jcallback_obj,
m_jPutMethodId,
j_key,
j_value);
}; };
WriteBatchHandlerJniCallback::kv_op(key, value, put); WriteBatchHandlerJniCallback::kv_op(key, value, put);
} }
ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MergeCF( ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MergeCF(
uint32_t column_family_id, const Slice& key, const Slice& value) { uint32_t column_family_id, const Slice& key, const Slice& value) {
auto merge = [this, column_family_id] ( auto merge = [this, column_family_id](jbyteArray j_key, jbyteArray j_value) {
jbyteArray j_key, jbyteArray j_value) { m_env->CallVoidMethod(m_jcallback_obj, m_jMergeCfMethodId,
m_env->CallVoidMethod( static_cast<jint>(column_family_id), j_key, j_value);
m_jcallback_obj,
m_jMergeCfMethodId,
static_cast<jint>(column_family_id),
j_key,
j_value);
}; };
auto status = WriteBatchHandlerJniCallback::kv_op(key, value, merge); auto status = WriteBatchHandlerJniCallback::kv_op(key, value, merge);
if(status == nullptr) { if (status == nullptr) {
return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is
// an Exception but we don't know // an Exception but we don't know
// the ROCKSDB_NAMESPACE::Status? // the ROCKSDB_NAMESPACE::Status?
@ -190,28 +175,20 @@ ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MergeCF(
} }
void WriteBatchHandlerJniCallback::Merge(const Slice& key, const Slice& value) { void WriteBatchHandlerJniCallback::Merge(const Slice& key, const Slice& value) {
auto merge = [this] ( auto merge = [this](jbyteArray j_key, jbyteArray j_value) {
jbyteArray j_key, jbyteArray j_value) { m_env->CallVoidMethod(m_jcallback_obj, m_jMergeMethodId, j_key, j_value);
m_env->CallVoidMethod(
m_jcallback_obj,
m_jMergeMethodId,
j_key,
j_value);
}; };
WriteBatchHandlerJniCallback::kv_op(key, value, merge); WriteBatchHandlerJniCallback::kv_op(key, value, merge);
} }
ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::DeleteCF( ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::DeleteCF(
uint32_t column_family_id, const Slice& key) { uint32_t column_family_id, const Slice& key) {
auto remove = [this, column_family_id] (jbyteArray j_key) { auto remove = [this, column_family_id](jbyteArray j_key) {
m_env->CallVoidMethod( m_env->CallVoidMethod(m_jcallback_obj, m_jDeleteCfMethodId,
m_jcallback_obj, static_cast<jint>(column_family_id), j_key);
m_jDeleteCfMethodId,
static_cast<jint>(column_family_id),
j_key);
}; };
auto status = WriteBatchHandlerJniCallback::k_op(key, remove); auto status = WriteBatchHandlerJniCallback::k_op(key, remove);
if(status == nullptr) { if (status == nullptr) {
return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is
// an Exception but we don't know // an Exception but we don't know
// the ROCKSDB_NAMESPACE::Status? // the ROCKSDB_NAMESPACE::Status?
@ -221,26 +198,20 @@ ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::DeleteCF(
} }
void WriteBatchHandlerJniCallback::Delete(const Slice& key) { void WriteBatchHandlerJniCallback::Delete(const Slice& key) {
auto remove = [this] (jbyteArray j_key) { auto remove = [this](jbyteArray j_key) {
m_env->CallVoidMethod( m_env->CallVoidMethod(m_jcallback_obj, m_jDeleteMethodId, j_key);
m_jcallback_obj,
m_jDeleteMethodId,
j_key);
}; };
WriteBatchHandlerJniCallback::k_op(key, remove); WriteBatchHandlerJniCallback::k_op(key, remove);
} }
ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::SingleDeleteCF( ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::SingleDeleteCF(
uint32_t column_family_id, const Slice& key) { uint32_t column_family_id, const Slice& key) {
auto singleDelete = [this, column_family_id] (jbyteArray j_key) { auto singleDelete = [this, column_family_id](jbyteArray j_key) {
m_env->CallVoidMethod( m_env->CallVoidMethod(m_jcallback_obj, m_jSingleDeleteCfMethodId,
m_jcallback_obj, static_cast<jint>(column_family_id), j_key);
m_jSingleDeleteCfMethodId,
static_cast<jint>(column_family_id),
j_key);
}; };
auto status = WriteBatchHandlerJniCallback::k_op(key, singleDelete); auto status = WriteBatchHandlerJniCallback::k_op(key, singleDelete);
if(status == nullptr) { if (status == nullptr) {
return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is
// an Exception but we don't know // an Exception but we don't know
// the ROCKSDB_NAMESPACE::Status? // the ROCKSDB_NAMESPACE::Status?
@ -250,28 +221,23 @@ ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::SingleDeleteCF(
} }
void WriteBatchHandlerJniCallback::SingleDelete(const Slice& key) { void WriteBatchHandlerJniCallback::SingleDelete(const Slice& key) {
auto singleDelete = [this] (jbyteArray j_key) { auto singleDelete = [this](jbyteArray j_key) {
m_env->CallVoidMethod( m_env->CallVoidMethod(m_jcallback_obj, m_jSingleDeleteMethodId, j_key);
m_jcallback_obj,
m_jSingleDeleteMethodId,
j_key);
}; };
WriteBatchHandlerJniCallback::k_op(key, singleDelete); WriteBatchHandlerJniCallback::k_op(key, singleDelete);
} }
ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::DeleteRangeCF( ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::DeleteRangeCF(
uint32_t column_family_id, const Slice& beginKey, const Slice& endKey) { uint32_t column_family_id, const Slice& beginKey, const Slice& endKey) {
auto deleteRange = [this, column_family_id] ( auto deleteRange = [this, column_family_id](jbyteArray j_beginKey,
jbyteArray j_beginKey, jbyteArray j_endKey) { jbyteArray j_endKey) {
m_env->CallVoidMethod( m_env->CallVoidMethod(m_jcallback_obj, m_jDeleteRangeCfMethodId,
m_jcallback_obj, static_cast<jint>(column_family_id), j_beginKey,
m_jDeleteRangeCfMethodId, j_endKey);
static_cast<jint>(column_family_id),
j_beginKey,
j_endKey);
}; };
auto status = WriteBatchHandlerJniCallback::kv_op(beginKey, endKey, deleteRange); auto status =
if(status == nullptr) { WriteBatchHandlerJniCallback::kv_op(beginKey, endKey, deleteRange);
if (status == nullptr) {
return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is
// an Exception but we don't know // an Exception but we don't know
// the ROCKSDB_NAMESPACE::Status? // the ROCKSDB_NAMESPACE::Status?
@ -281,41 +247,30 @@ ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::DeleteRangeCF(
} }
void WriteBatchHandlerJniCallback::DeleteRange(const Slice& beginKey, void WriteBatchHandlerJniCallback::DeleteRange(const Slice& beginKey,
const Slice& endKey) { const Slice& endKey) {
auto deleteRange = [this] ( auto deleteRange = [this](jbyteArray j_beginKey, jbyteArray j_endKey) {
jbyteArray j_beginKey, jbyteArray j_endKey) { m_env->CallVoidMethod(m_jcallback_obj, m_jDeleteRangeMethodId, j_beginKey,
m_env->CallVoidMethod( j_endKey);
m_jcallback_obj,
m_jDeleteRangeMethodId,
j_beginKey,
j_endKey);
}; };
WriteBatchHandlerJniCallback::kv_op(beginKey, endKey, deleteRange); WriteBatchHandlerJniCallback::kv_op(beginKey, endKey, deleteRange);
} }
void WriteBatchHandlerJniCallback::LogData(const Slice& blob) { void WriteBatchHandlerJniCallback::LogData(const Slice& blob) {
auto logData = [this] (jbyteArray j_blob) { auto logData = [this](jbyteArray j_blob) {
m_env->CallVoidMethod( m_env->CallVoidMethod(m_jcallback_obj, m_jLogDataMethodId, j_blob);
m_jcallback_obj,
m_jLogDataMethodId,
j_blob);
}; };
WriteBatchHandlerJniCallback::k_op(blob, logData); WriteBatchHandlerJniCallback::k_op(blob, logData);
} }
ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::PutBlobIndexCF( ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::PutBlobIndexCF(
uint32_t column_family_id, const Slice& key, const Slice& value) { uint32_t column_family_id, const Slice& key, const Slice& value) {
auto putBlobIndex = [this, column_family_id] ( auto putBlobIndex = [this, column_family_id](jbyteArray j_key,
jbyteArray j_key, jbyteArray j_value) { jbyteArray j_value) {
m_env->CallVoidMethod( m_env->CallVoidMethod(m_jcallback_obj, m_jPutBlobIndexCfMethodId,
m_jcallback_obj, static_cast<jint>(column_family_id), j_key, j_value);
m_jPutBlobIndexCfMethodId,
static_cast<jint>(column_family_id),
j_key,
j_value);
}; };
auto status = WriteBatchHandlerJniCallback::kv_op(key, value, putBlobIndex); auto status = WriteBatchHandlerJniCallback::kv_op(key, value, putBlobIndex);
if(status == nullptr) { if (status == nullptr) {
return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is
// an Exception but we don't know // an Exception but we don't know
// the ROCKSDB_NAMESPACE::Status? // the ROCKSDB_NAMESPACE::Status?
@ -327,7 +282,7 @@ ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::PutBlobIndexCF(
ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkBeginPrepare( ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkBeginPrepare(
bool unprepare) { bool unprepare) {
#ifndef DEBUG #ifndef DEBUG
(void) unprepare; (void)unprepare;
#else #else
assert(!unprepare); assert(!unprepare);
#endif #endif
@ -346,7 +301,8 @@ ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkBeginPrepare(
// better error code here // better error code here
} else { } else {
m_env->ExceptionClear(); // clear the exception, as we have extracted the status m_env->ExceptionClear(); // clear the exception, as we have extracted the
// status
return ROCKSDB_NAMESPACE::Status(*status); return ROCKSDB_NAMESPACE::Status(*status);
} }
} }
@ -356,15 +312,11 @@ ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkBeginPrepare(
ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkEndPrepare( ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkEndPrepare(
const Slice& xid) { const Slice& xid) {
auto markEndPrepare = [this] ( auto markEndPrepare = [this](jbyteArray j_xid) {
jbyteArray j_xid) { m_env->CallVoidMethod(m_jcallback_obj, m_jMarkEndPrepareMethodId, j_xid);
m_env->CallVoidMethod(
m_jcallback_obj,
m_jMarkEndPrepareMethodId,
j_xid);
}; };
auto status = WriteBatchHandlerJniCallback::k_op(xid, markEndPrepare); auto status = WriteBatchHandlerJniCallback::k_op(xid, markEndPrepare);
if(status == nullptr) { if (status == nullptr) {
return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is
// an Exception but we don't know // an Exception but we don't know
// the ROCKSDB_NAMESPACE::Status? // the ROCKSDB_NAMESPACE::Status?
@ -375,7 +327,8 @@ ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkEndPrepare(
ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkNoop( ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkNoop(
bool empty_batch) { bool empty_batch) {
m_env->CallVoidMethod(m_jcallback_obj, m_jMarkNoopMethodId, static_cast<jboolean>(empty_batch)); m_env->CallVoidMethod(m_jcallback_obj, m_jMarkNoopMethodId,
static_cast<jboolean>(empty_batch));
// check for Exception, in-particular RocksDBException // check for Exception, in-particular RocksDBException
if (m_env->ExceptionCheck()) { if (m_env->ExceptionCheck()) {
@ -390,7 +343,8 @@ ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkNoop(
// better error code here // better error code here
} else { } else {
m_env->ExceptionClear(); // clear the exception, as we have extracted the status m_env->ExceptionClear(); // clear the exception, as we have extracted the
// status
return ROCKSDB_NAMESPACE::Status(*status); return ROCKSDB_NAMESPACE::Status(*status);
} }
} }
@ -400,15 +354,11 @@ ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkNoop(
ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkRollback( ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkRollback(
const Slice& xid) { const Slice& xid) {
auto markRollback = [this] ( auto markRollback = [this](jbyteArray j_xid) {
jbyteArray j_xid) { m_env->CallVoidMethod(m_jcallback_obj, m_jMarkRollbackMethodId, j_xid);
m_env->CallVoidMethod(
m_jcallback_obj,
m_jMarkRollbackMethodId,
j_xid);
}; };
auto status = WriteBatchHandlerJniCallback::k_op(xid, markRollback); auto status = WriteBatchHandlerJniCallback::k_op(xid, markRollback);
if(status == nullptr) { if (status == nullptr) {
return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is
// an Exception but we don't know // an Exception but we don't know
// the ROCKSDB_NAMESPACE::Status? // the ROCKSDB_NAMESPACE::Status?
@ -419,15 +369,11 @@ ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkRollback(
ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkCommit( ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkCommit(
const Slice& xid) { const Slice& xid) {
auto markCommit = [this] ( auto markCommit = [this](jbyteArray j_xid) {
jbyteArray j_xid) { m_env->CallVoidMethod(m_jcallback_obj, m_jMarkCommitMethodId, j_xid);
m_env->CallVoidMethod(
m_jcallback_obj,
m_jMarkCommitMethodId,
j_xid);
}; };
auto status = WriteBatchHandlerJniCallback::k_op(xid, markCommit); auto status = WriteBatchHandlerJniCallback::k_op(xid, markCommit);
if(status == nullptr) { if (status == nullptr) {
return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is return ROCKSDB_NAMESPACE::Status::OK(); // TODO(AR) what to do if there is
// an Exception but we don't know // an Exception but we don't know
// the ROCKSDB_NAMESPACE::Status? // the ROCKSDB_NAMESPACE::Status?
@ -454,10 +400,9 @@ ROCKSDB_NAMESPACE::Status WriteBatchHandlerJniCallback::MarkCommitWithTimestamp(
} }
bool WriteBatchHandlerJniCallback::Continue() { bool WriteBatchHandlerJniCallback::Continue() {
jboolean jContinue = m_env->CallBooleanMethod( jboolean jContinue =
m_jcallback_obj, m_env->CallBooleanMethod(m_jcallback_obj, m_jContinueMethodId);
m_jContinueMethodId); if (m_env->ExceptionCheck()) {
if(m_env->ExceptionCheck()) {
// exception thrown // exception thrown
m_env->ExceptionDescribe(); m_env->ExceptionDescribe();
} }
@ -510,7 +455,8 @@ std::unique_ptr<ROCKSDB_NAMESPACE::Status> WriteBatchHandlerJniCallback::kv_op(
return nullptr; return nullptr;
} else { } else {
m_env->ExceptionClear(); // clear the exception, as we have extracted the status m_env->ExceptionClear(); // clear the exception, as we have extracted the
// status
return status; return status;
} }
} }
@ -556,7 +502,8 @@ std::unique_ptr<ROCKSDB_NAMESPACE::Status> WriteBatchHandlerJniCallback::k_op(
return nullptr; return nullptr;
} else { } else {
m_env->ExceptionClear(); // clear the exception, as we have extracted the status m_env->ExceptionClear(); // clear the exception, as we have extracted the
// status
return status; return status;
} }
} }

@ -9,11 +9,13 @@
#ifndef JAVA_ROCKSJNI_WRITEBATCHHANDLERJNICALLBACK_H_ #ifndef JAVA_ROCKSJNI_WRITEBATCHHANDLERJNICALLBACK_H_
#define JAVA_ROCKSJNI_WRITEBATCHHANDLERJNICALLBACK_H_ #define JAVA_ROCKSJNI_WRITEBATCHHANDLERJNICALLBACK_H_
#include <functional>
#include <jni.h> #include <jni.h>
#include <functional>
#include <memory> #include <memory>
#include "rocksjni/jnicallback.h"
#include "rocksdb/write_batch.h" #include "rocksdb/write_batch.h"
#include "rocksjni/jnicallback.h"
namespace ROCKSDB_NAMESPACE { namespace ROCKSDB_NAMESPACE {
/** /**
@ -23,68 +25,67 @@ namespace ROCKSDB_NAMESPACE {
* which calls the appropriate Java method. * which calls the appropriate Java method.
* This enables Write Batch Handlers to be implemented in Java. * This enables Write Batch Handlers to be implemented in Java.
*/ */
class WriteBatchHandlerJniCallback : public JniCallback, public WriteBatch::Handler { class WriteBatchHandlerJniCallback : public JniCallback,
public WriteBatch::Handler {
public: public:
WriteBatchHandlerJniCallback( WriteBatchHandlerJniCallback(JNIEnv* env, jobject jWriteBackHandler);
JNIEnv* env, jobject jWriteBackHandler); Status PutCF(uint32_t column_family_id, const Slice& key, const Slice& value);
Status PutCF(uint32_t column_family_id, const Slice& key, void Put(const Slice& key, const Slice& value);
const Slice& value); Status MergeCF(uint32_t column_family_id, const Slice& key,
void Put(const Slice& key, const Slice& value); const Slice& value);
Status MergeCF(uint32_t column_family_id, const Slice& key, void Merge(const Slice& key, const Slice& value);
const Slice& value); Status DeleteCF(uint32_t column_family_id, const Slice& key);
void Merge(const Slice& key, const Slice& value); void Delete(const Slice& key);
Status DeleteCF(uint32_t column_family_id, const Slice& key); Status SingleDeleteCF(uint32_t column_family_id, const Slice& key);
void Delete(const Slice& key); void SingleDelete(const Slice& key);
Status SingleDeleteCF(uint32_t column_family_id, const Slice& key); Status DeleteRangeCF(uint32_t column_family_id, const Slice& beginKey,
void SingleDelete(const Slice& key); const Slice& endKey);
Status DeleteRangeCF(uint32_t column_family_id, const Slice& beginKey, void DeleteRange(const Slice& beginKey, const Slice& endKey);
const Slice& endKey); void LogData(const Slice& blob);
void DeleteRange(const Slice& beginKey, const Slice& endKey); Status PutBlobIndexCF(uint32_t column_family_id, const Slice& key,
void LogData(const Slice& blob); const Slice& value);
Status PutBlobIndexCF(uint32_t column_family_id, const Slice& key, Status MarkBeginPrepare(bool);
const Slice& value); Status MarkEndPrepare(const Slice& xid);
Status MarkBeginPrepare(bool); Status MarkNoop(bool empty_batch);
Status MarkEndPrepare(const Slice& xid); Status MarkRollback(const Slice& xid);
Status MarkNoop(bool empty_batch); Status MarkCommit(const Slice& xid);
Status MarkRollback(const Slice& xid); Status MarkCommitWithTimestamp(const Slice& xid, const Slice& commit_ts);
Status MarkCommit(const Slice& xid); bool Continue();
Status MarkCommitWithTimestamp(const Slice& xid, const Slice& commit_ts);
bool Continue();
private: private:
JNIEnv* m_env; JNIEnv* m_env;
jmethodID m_jPutCfMethodId; jmethodID m_jPutCfMethodId;
jmethodID m_jPutMethodId; jmethodID m_jPutMethodId;
jmethodID m_jMergeCfMethodId; jmethodID m_jMergeCfMethodId;
jmethodID m_jMergeMethodId; jmethodID m_jMergeMethodId;
jmethodID m_jDeleteCfMethodId; jmethodID m_jDeleteCfMethodId;
jmethodID m_jDeleteMethodId; jmethodID m_jDeleteMethodId;
jmethodID m_jSingleDeleteCfMethodId; jmethodID m_jSingleDeleteCfMethodId;
jmethodID m_jSingleDeleteMethodId; jmethodID m_jSingleDeleteMethodId;
jmethodID m_jDeleteRangeCfMethodId; jmethodID m_jDeleteRangeCfMethodId;
jmethodID m_jDeleteRangeMethodId; jmethodID m_jDeleteRangeMethodId;
jmethodID m_jLogDataMethodId; jmethodID m_jLogDataMethodId;
jmethodID m_jPutBlobIndexCfMethodId; jmethodID m_jPutBlobIndexCfMethodId;
jmethodID m_jMarkBeginPrepareMethodId; jmethodID m_jMarkBeginPrepareMethodId;
jmethodID m_jMarkEndPrepareMethodId; jmethodID m_jMarkEndPrepareMethodId;
jmethodID m_jMarkNoopMethodId; jmethodID m_jMarkNoopMethodId;
jmethodID m_jMarkRollbackMethodId; jmethodID m_jMarkRollbackMethodId;
jmethodID m_jMarkCommitMethodId; jmethodID m_jMarkCommitMethodId;
jmethodID m_jMarkCommitWithTimestampMethodId; jmethodID m_jMarkCommitWithTimestampMethodId;
jmethodID m_jContinueMethodId; jmethodID m_jContinueMethodId;
/** /**
* @return A pointer to a ROCKSDB_NAMESPACE::Status or nullptr if an * @return A pointer to a ROCKSDB_NAMESPACE::Status or nullptr if an
* unexpected exception occurred * unexpected exception occurred
*/ */
std::unique_ptr<ROCKSDB_NAMESPACE::Status> kv_op( std::unique_ptr<ROCKSDB_NAMESPACE::Status> kv_op(
const Slice& key, const Slice& value, const Slice& key, const Slice& value,
std::function<void(jbyteArray, jbyteArray)> kvFn); std::function<void(jbyteArray, jbyteArray)> kvFn);
/** /**
* @return A pointer to a ROCKSDB_NAMESPACE::Status or nullptr if an * @return A pointer to a ROCKSDB_NAMESPACE::Status or nullptr if an
* unexpected exception occurred * unexpected exception occurred
*/ */
std::unique_ptr<ROCKSDB_NAMESPACE::Status> k_op( std::unique_ptr<ROCKSDB_NAMESPACE::Status> k_op(
const Slice& key, std::function<void(jbyteArray)> kFn); const Slice& key, std::function<void(jbyteArray)> kFn);
}; };
} // namespace ROCKSDB_NAMESPACE } // namespace ROCKSDB_NAMESPACE

Loading…
Cancel
Save