diff --git a/src/ray/raylet/node_manager.cc b/src/ray/raylet/node_manager.cc index 3bb0c0e1e..7927d384d 100644 --- a/src/ray/raylet/node_manager.cc +++ b/src/ray/raylet/node_manager.cc @@ -2300,7 +2300,11 @@ void NodeManager::SubmitTask(const Task &task, const Lineage &uncommitted_lineag RAY_LOG(DEBUG) << "Submitting task: " << task.DebugString(); if (local_queues_.HasTask(task_id)) { - if (spec.IsActorCreationTask()) { + if (RayConfig::instance().gcs_actor_service_enabled() && spec.IsActorCreationTask()) { + // NOTE(hchen): Normally when raylet receives a duplicated actor creation task + // from GCS, raylet should just ignore the task. However, due to the hack that + // we save the RPC reply in task's OnDispatch callback, we have to remove the + // old task and re-add the new task, to make sure the RPC reply callback is correct. RAY_LOG(WARNING) << "Submitted actor creation task " << task_id << " is already queued. This is most likely due to a GCS restart. " "We will remove "