[Placement Group] Add get / get all / remove interface for Placement Group Java api. (#11821)

* add placement group java get/get all interface

* add remove placement group api

* fix some issue like: Placement Group -> placement group

* extract dumplicate code to placement group utils

* specify running mode for placement group ut

* update checkGlobalStateAccessorPointerValid -> validateGlobalStateAccessorPointer

* use THROW_EXCEPTION_AND_RETURN_IF_NOT_OK

* update pg log print
This commit is contained in:
DK.Pino
2020-11-17 12:32:39 +08:00
committed by GitHub
parent 90574b66cc
commit 0f9e2fec12
22 changed files with 479 additions and 71 deletions
@@ -129,6 +129,32 @@ Java_io_ray_runtime_gcs_GlobalStateAccessor_nativeGetActorCheckpointId(
return nullptr;
}
JNIEXPORT jbyteArray JNICALL
Java_io_ray_runtime_gcs_GlobalStateAccessor_nativeGetPlacementGroupInfo(
JNIEnv *env, jobject o, jlong gcs_accessor_ptr, jbyteArray placement_group_id_bytes) {
const auto placement_group_id =
JavaByteArrayToId<ray::PlacementGroupID>(env, placement_group_id_bytes);
auto *gcs_accessor =
reinterpret_cast<ray::gcs::GlobalStateAccessor *>(gcs_accessor_ptr);
auto placement_group = gcs_accessor->GetPlacementGroupInfo(placement_group_id);
if (placement_group) {
return NativeStringToJavaByteArray(env, *placement_group);
}
return nullptr;
}
JNIEXPORT jobject JNICALL
Java_io_ray_runtime_gcs_GlobalStateAccessor_nativeGetAllPlacementGroupInfo(
JNIEnv *env, jobject o, jlong gcs_accessor_ptr) {
auto *gcs_accessor =
reinterpret_cast<ray::gcs::GlobalStateAccessor *>(gcs_accessor_ptr);
auto placement_group_info_list = gcs_accessor->GetAllPlacementGroupInfo();
return NativeVectorToJavaList<std::string>(
env, placement_group_info_list, [](JNIEnv *env, const std::string &str) {
return NativeStringToJavaByteArray(env, str);
});
}
#ifdef __cplusplus
}
#endif
@@ -112,6 +112,26 @@ JNIEXPORT jbyteArray JNICALL
Java_io_ray_runtime_gcs_GlobalStateAccessor_nativeGetActorCheckpointId(JNIEnv *, jobject,
jlong, jbyteArray);
/*
* Class: io_ray_runtime_gcs_GlobalStateAccessor
* Method: nativeGetPlacementGroupInfo
* Signature: (J[B)[B
*/
JNIEXPORT jbyteArray JNICALL
Java_io_ray_runtime_gcs_GlobalStateAccessor_nativeGetPlacementGroupInfo(JNIEnv *, jobject,
jlong,
jbyteArray);
/*
* Class: io_ray_runtime_gcs_GlobalStateAccessor
* Method: nativeGetAllPlacementGroupInfo
* Signature: (J)Ljava/util/List;
*/
JNIEXPORT jobject JNICALL
Java_io_ray_runtime_gcs_GlobalStateAccessor_nativeGetAllPlacementGroupInfo(JNIEnv *,
jobject,
jlong);
#ifdef __cplusplus
}
#endif
@@ -283,6 +283,16 @@ Java_io_ray_runtime_task_NativeTaskSubmitter_nativeCreatePlacementGroup(
return IdToJavaByteArray<ray::PlacementGroupID>(env, placement_group_id);
}
JNIEXPORT void JNICALL
Java_io_ray_runtime_task_NativeTaskSubmitter_nativeRemovePlacementGroup(
JNIEnv *env, jclass p, jbyteArray placement_group_id_bytes) {
const auto placement_group_id =
JavaByteArrayToId<ray::PlacementGroupID>(env, placement_group_id_bytes);
auto status =
ray::CoreWorkerProcess::GetCoreWorker().RemovePlacementGroup(placement_group_id);
THROW_EXCEPTION_AND_RETURN_IF_NOT_OK(env, status, (void)0);
}
#ifdef __cplusplus
}
#endif
@@ -62,6 +62,15 @@ Java_io_ray_runtime_task_NativeTaskSubmitter_nativeCreatePlacementGroup(JNIEnv *
jstring, jobject,
jint);
/*
* Class: io_ray_runtime_task_NativeTaskSubmitter
* Method: nativeRemovePlacementGroup
* Signature: ([B)V
*/
JNIEXPORT void JNICALL
Java_io_ray_runtime_task_NativeTaskSubmitter_nativeRemovePlacementGroup(JNIEnv *, jclass,
jbyteArray);
#ifdef __cplusplus
}
#endif
+2 -3
View File
@@ -225,9 +225,8 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) {
java_placement_group_class =
LoadClass(env, "io/ray/runtime/placementgroup/PlacementGroupImpl");
java_placement_group_id =
env->GetFieldID(java_placement_group_class, "id",
"Lio/ray/runtime/placementgroup/PlacementGroupId;");
java_placement_group_id = env->GetFieldID(java_placement_group_class, "id",
"Lio/ray/api/id/PlacementGroupId;");
java_actor_creation_options_class =
LoadClass(env, "io/ray/api/options/ActorCreationOptions");