From 368b14a0daa6ea5027786ff08975f693aef7afeb Mon Sep 17 00:00:00 2001 From: Max Fitton Date: Mon, 9 Nov 2020 09:36:34 -0800 Subject: [PATCH] Stop dashboard from erroring when an actor does not have a corresponding core worker (#11870) --- dashboard/datacenter.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/dashboard/datacenter.py b/dashboard/datacenter.py index 059704db4..edf0e1545 100644 --- a/dashboard/datacenter.py +++ b/dashboard/datacenter.py @@ -229,23 +229,24 @@ class DataOrganizer: # TODO(fyrestone): remove this, give a link from actor # info to worker info in front-end. node_id = actor["address"]["rayletId"] - pid = core_worker_stats["pid"] + pid = core_worker_stats.get("pid") node_physical_stats = DataSource.node_physical_stats.get(node_id, {}) - actor_process_stats = None - for process_stats in node_physical_stats.get("workers"): - if process_stats["pid"] == pid: - actor_process_stats = process_stats - break - actor_process_gpu_stats = None - for gpu_stats in node_physical_stats.get("gpus"): - for process in gpu_stats.get("processes", []): - if process["pid"] == pid: - actor_process_gpu_stats = gpu_stats + if pid: + for process_stats in node_physical_stats.get("workers"): + if process_stats["pid"] == pid: + actor_process_stats = process_stats break - if actor_process_gpu_stats is not None: - break + + for gpu_stats in node_physical_stats.get("gpus"): + for process in gpu_stats.get("processes", []): + if process["pid"] == pid: + actor_process_gpu_stats = gpu_stats + break + if actor_process_gpu_stats is not None: + break + actor["gpus"] = actor_process_gpu_stats actor["processStats"] = actor_process_stats