Skip to content

Commit

Permalink
expose write buffer manager method through Java Api
Browse files Browse the repository at this point in the history
  • Loading branch information
benoitmeriaux committed Apr 15, 2021
1 parent b1f62be commit 2b23ee2
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 6 deletions.
41 changes: 41 additions & 0 deletions java/rocksjni/write_buffer_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,44 @@ void Java_org_rocksdb_WriteBufferManager_disposeInternal(
assert(write_buffer_manager != nullptr);
delete write_buffer_manager;
}

/*
* Class: org_rocksdb_WriteBufferManager
* Method: getMemoryUsage
* Signature: (J)J
*/
jlong Java_org_rocksdb_WriteBufferManager_getMemoryUsage(JNIEnv* /*env*/,
jclass,
jlong jhandle) {
auto* write_buffer_manager =
reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::WriteBufferManager>*>(
jhandle);
return static_cast<jlong>(write_buffer_manager->memory_usage());
}

/*
* Class: org_rocksdb_WriteBufferManager
* Method: getMutableMemtableMemoryUsage
* Signature: (J)J
*/
jlong Java_org_rocksdb_WriteBufferManager_getMutableMemtableMemoryUsage(
JNIEnv* /*env*/, jclass, jlong jhandle) {
auto* write_buffer_manager =
reinterpret_cast <
std::shared_ptr<ROCKSDB_NAMESPACE::WriteBufferManager>(jhandle);
return static_cast<jlong>(
write_buffer_manager->mutable_memtable_memory_usage());
}

/*
* Class: org_rocksdb_WriteBufferManager
* Method: getBufferSize
* Signature: (J)J
*/
jlong Java_org_rocksdb_WriteBufferManager_getBufferSize(JNIEnv*, jclass,
jlong jhandle) {
auto* write_buffer_manager =
reinterpret_cast <
std::shared_ptr<ROCKSDB_NAMESPACE::WriteBufferManager>(jhandle);
return static_cast<jlong>(write_buffer_manager->buffer_size());
}
55 changes: 49 additions & 6 deletions java/src/main/java/org/rocksdb/WriteBufferManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,61 @@ public class WriteBufferManager extends RocksObject {
/**
* Construct a new instance of WriteBufferManager.
*
* Check <a href="https://github.com/facebook/rocksdb/wiki/Write-Buffer-Manager">
* https://github.com/facebook/rocksdb/wiki/Write-Buffer-Manager</a>
* for more details on when to use it
* Check
* <a href="https://github.com/facebook/rocksdb/wiki/Write-Buffer-Manager">
* https://github.com/facebook/rocksdb/wiki/Write-Buffer-Manager</a> for more
* details on when to use it
*
* @param bufferSizeBytes buffer size(in bytes) to use for native write_buffer_manager
* @param cache cache whose memory should be bounded by this write buffer manager
* @param bufferSizeBytes buffer size(in bytes) to use for native
* write_buffer_manager
* @param cache cache whose memory should be bounded by this write
* buffer manager
*/
public WriteBufferManager(final long bufferSizeBytes, final Cache cache){
public WriteBufferManager(final long bufferSizeBytes, final Cache cache) {
super(newWriteBufferManager(bufferSizeBytes, cache.nativeHandle_));
}

/**
* Returns the buffer size of the write buffer manager
*
* @return buffer size.
*
*/
public long getBufferSize() {
assert (isOwningHandle());
return getBufferSize(this.nativeHandle_);
}

/**
* Returns the memory usage of the write buffer manager
*
* @return memory usage.
*
*/
public long getMemoryUsage() {
assert (isOwningHandle());
return getMemoryUsage(this.nativeHandle_);
}

/**
* Returns the mutable memtable memory usage of the write buffer manager
*
* @return mutable memtable memory usage size.
*
*/
public long getMutableMemtableMemoryUsage() {
assert (isOwningHandle());
return getMutableMemtableMemoryUsage(this.nativeHandle_);
}

private native static long newWriteBufferManager(final long bufferSizeBytes, final long cacheHandle);

private native static long getMemoryUsage(final long handle);

private native static long getMutableMemtableMemoryUsage(final long handle);

private native static long getBufferSize(final long handle);

@Override
protected native void disposeInternal(final long handle);
}

0 comments on commit 2b23ee2

Please sign in to comment.