Fix hang if actor object id is returned from a task that exits (#6885)

This commit is contained in:
Eric Liang
2020-02-11 20:28:13 -08:00
committed by GitHub
parent e09f63ad65
commit 305eaaabe9
3 changed files with 24 additions and 3 deletions
+4 -3
View File
@@ -288,13 +288,14 @@ void CoreWorker::SetCurrentTaskId(const TaskID &task_id) {
absl::MutexLock lock(&mutex_);
not_actor_task = actor_id_.IsNil();
}
// Clear all actor handles at the end of each non-actor task.
if (not_actor_task && task_id.IsNil()) {
absl::MutexLock lock(&actor_handles_mutex_);
// Reset the seqnos so that for the next task it start off at 0.
for (const auto &handle : actor_handles_) {
RAY_CHECK_OK(gcs_client_->Actors().AsyncUnsubscribe(handle.first, nullptr));
handle.second->Reset();
}
actor_handles_.clear();
// TODO(ekl) we can't unsubscribe to actor notifications here due to
// https://github.com/ray-project/ray/pull/6885
}
}