From b5412b355e3f900f7b40adadf5d7b51ee142141a Mon Sep 17 00:00:00 2001 From: Nim Wijetunga Date: Wed, 24 Mar 2021 23:34:34 +0000 Subject: [PATCH] Add Java API for network busyness --- bindings/java/fdbJNI.cpp | 11 +++++++++++ .../src/main/com/apple/foundationdb/Database.java | 9 +++++++++ .../src/main/com/apple/foundationdb/FDBDatabase.java | 11 +++++++++++ 3 files changed, 31 insertions(+) diff --git a/bindings/java/fdbJNI.cpp b/bindings/java/fdbJNI.cpp index ebe83269e6..f5d66577fd 100644 --- a/bindings/java/fdbJNI.cpp +++ b/bindings/java/fdbJNI.cpp @@ -580,6 +580,17 @@ JNIEXPORT void JNICALL Java_com_apple_foundationdb_FDBDatabase_Database_1setOpti } } +JNIEXPORT jdouble JNICALL Java_com_apple_foundationdb_FDBDatabase_Database_1getMainThreadBusyness(JNIEnv* jenv, + jobject, + jlong dbPtr) { + if (!dbPtr) { + throwParamNotNull(jenv); + return 0; + } + FDBDatabase* database = (FDBDatabase*)dbPtr; + return (jdouble) fdb_database_get_main_thread_busyness(database); +} + JNIEXPORT jboolean JNICALL Java_com_apple_foundationdb_FDB_Error_1predicate(JNIEnv* jenv, jobject, jint predicate, diff --git a/bindings/java/src/main/com/apple/foundationdb/Database.java b/bindings/java/src/main/com/apple/foundationdb/Database.java index e5f2d36de6..741fa1c5eb 100644 --- a/bindings/java/src/main/com/apple/foundationdb/Database.java +++ b/bindings/java/src/main/com/apple/foundationdb/Database.java @@ -80,6 +80,15 @@ public interface Database extends AutoCloseable, TransactionContext { */ DatabaseOptions options(); + /** + * Returns a value which indicates the saturation of the client + *
+ * Note: By default, this value is updated every second + * + * @return a value where 0 indicates that the client is idle and 1 (or larger) indicates that the client is saturated. + */ + double getMainThreadBusyness(); + /** * Runs a read-only transactional function against this {@code Database} with retry logic. * {@link Function#apply(Object) apply(ReadTransaction)} will be called on the diff --git a/bindings/java/src/main/com/apple/foundationdb/FDBDatabase.java b/bindings/java/src/main/com/apple/foundationdb/FDBDatabase.java index 620b5aaa4e..8df1fd75b6 100644 --- a/bindings/java/src/main/com/apple/foundationdb/FDBDatabase.java +++ b/bindings/java/src/main/com/apple/foundationdb/FDBDatabase.java @@ -150,6 +150,16 @@ class FDBDatabase extends NativeObjectWrapper implements Database, OptionConsume } } + @Override + public double getMainThreadBusyness() { + pointerReadLock.lock(); + try { + return Database_getMainThreadBusyness(getPtr()); + } finally { + pointerReadLock.unlock(); + } + } + @Override public Executor getExecutor() { return executor; @@ -163,4 +173,5 @@ class FDBDatabase extends NativeObjectWrapper implements Database, OptionConsume private native long Database_createTransaction(long cPtr); private native void Database_dispose(long cPtr); private native void Database_setOption(long cPtr, int code, byte[] value) throws FDBException; + private native double Database_getMainThreadBusyness(long cPtr); } \ No newline at end of file