From a7a7bef62258f2ac78c0d22709d70752ab185d1b Mon Sep 17 00:00:00 2001 From: fangfengbin <869218239a@zju.edu.cn> Date: Thu, 2 Jul 2020 15:44:08 +0800 Subject: [PATCH] Fix Java test crash due to incorrect destruction order (#9236) --- .../lib/java/io_ray_runtime_gcs_GlobalStateAccessor.cc | 7 ------- .../lib/java/io_ray_runtime_gcs_GlobalStateAccessor.h | 8 -------- src/ray/gcs/gcs_client/global_state_accessor.cc | 8 +++----- 3 files changed, 3 insertions(+), 20 deletions(-) diff --git a/src/ray/core_worker/lib/java/io_ray_runtime_gcs_GlobalStateAccessor.cc b/src/ray/core_worker/lib/java/io_ray_runtime_gcs_GlobalStateAccessor.cc index 0cdc7f50d..596e320a7 100644 --- a/src/ray/core_worker/lib/java/io_ray_runtime_gcs_GlobalStateAccessor.cc +++ b/src/ray/core_worker/lib/java/io_ray_runtime_gcs_GlobalStateAccessor.cc @@ -46,13 +46,6 @@ JNIEXPORT jboolean JNICALL Java_io_ray_runtime_gcs_GlobalStateAccessor_nativeCon return gcs_accessor->Connect(); } -JNIEXPORT void JNICALL Java_io_ray_runtime_gcs_GlobalStateAccessor_nativeDisconnect( - JNIEnv *env, jobject o, jlong gcs_accessor_ptr) { - auto *gcs_accessor = - reinterpret_cast(gcs_accessor_ptr); - gcs_accessor->Disconnect(); -} - JNIEXPORT jobject JNICALL Java_io_ray_runtime_gcs_GlobalStateAccessor_nativeGetAllJobInfo( JNIEnv *env, jobject o, jlong gcs_accessor_ptr) { auto *gcs_accessor = diff --git a/src/ray/core_worker/lib/java/io_ray_runtime_gcs_GlobalStateAccessor.h b/src/ray/core_worker/lib/java/io_ray_runtime_gcs_GlobalStateAccessor.h index a29420f3a..1606ab397 100644 --- a/src/ray/core_worker/lib/java/io_ray_runtime_gcs_GlobalStateAccessor.h +++ b/src/ray/core_worker/lib/java/io_ray_runtime_gcs_GlobalStateAccessor.h @@ -50,14 +50,6 @@ Java_io_ray_runtime_gcs_GlobalStateAccessor_nativeDestroyGlobalStateAccessor(JNI JNIEXPORT jboolean JNICALL Java_io_ray_runtime_gcs_GlobalStateAccessor_nativeConnect(JNIEnv *, jobject, jlong); -/* - * Class: io_ray_runtime_gcs_GlobalStateAccessor - * Method: nativeDisconnect - * Signature: (J)V - */ -JNIEXPORT void JNICALL -Java_io_ray_runtime_gcs_GlobalStateAccessor_nativeDisconnect(JNIEnv *, jobject, jlong); - /* * Class: io_ray_runtime_gcs_GlobalStateAccessor * Method: nativeGetAllJobInfo diff --git a/src/ray/gcs/gcs_client/global_state_accessor.cc b/src/ray/gcs/gcs_client/global_state_accessor.cc index 2a2189880..d9b3e3da1 100644 --- a/src/ray/gcs/gcs_client/global_state_accessor.cc +++ b/src/ray/gcs/gcs_client/global_state_accessor.cc @@ -46,11 +46,7 @@ GlobalStateAccessor::GlobalStateAccessor(const std::string &redis_address, promise.get_future().get(); } -GlobalStateAccessor::~GlobalStateAccessor() { - Disconnect(); - io_service_->stop(); - thread_io_service_->join(); -} +GlobalStateAccessor::~GlobalStateAccessor() { Disconnect(); } bool GlobalStateAccessor::Connect() { if (!is_connected_) { @@ -64,6 +60,8 @@ bool GlobalStateAccessor::Connect() { void GlobalStateAccessor::Disconnect() { if (is_connected_) { + io_service_->stop(); + thread_io_service_->join(); gcs_client_->Disconnect(); is_connected_ = false; }