From 35a4bfc885dda3bd4bf9837d29d0012925d394c5 Mon Sep 17 00:00:00 2001 From: Stephanie Wang Date: Wed, 18 Mar 2020 11:01:29 -0700 Subject: [PATCH] [core] Fix leak for subscribing to object dependencies in NodeManager (#7630) * Fix GetDependencies * lint --- src/ray/raylet/node_manager.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/ray/raylet/node_manager.cc b/src/ray/raylet/node_manager.cc index 31a0e10e0..6ffcf0a86 100644 --- a/src/ray/raylet/node_manager.cc +++ b/src/ray/raylet/node_manager.cc @@ -2252,9 +2252,10 @@ void NodeManager::AsyncResolveObjects( if (ray_get) { // TODO(ekl) using the assigned task id is a hack to handle unsubscription for // HandleDirectCallUnblocked. - task_dependency_manager_.SubscribeGetDependencies( - mark_worker_blocked ? current_task_id : worker->GetAssignedTaskId(), - required_object_ids); + auto &task_id = mark_worker_blocked ? current_task_id : worker->GetAssignedTaskId(); + if (!task_id.IsNil()) { + task_dependency_manager_.SubscribeGetDependencies(task_id, required_object_ids); + } } else { task_dependency_manager_.SubscribeWaitDependencies(worker->WorkerId(), required_object_ids); @@ -2456,6 +2457,7 @@ bool NodeManager::FinishAssignedTask(Worker &worker) { } // Notify the task dependency manager that this task has finished execution. + task_dependency_manager_.UnsubscribeGetDependencies(spec.TaskId()); task_dependency_manager_.TaskCanceled(task_id); // Unset the worker's assigned job Id if this is not an actor.