From 7c4399110045158daa280be2f6545adc7e03ffa5 Mon Sep 17 00:00:00 2001 From: SangBin Cho Date: Tue, 2 Jun 2020 16:06:36 -0700 Subject: [PATCH] [GCS] Monitor.py bug fix (#8725) * comment. * Fix bugs. * Used pubsub message instead. * Added a ray.actors test --- python/ray/dashboard/dashboard.py | 3 ++- python/ray/monitor.py | 4 ++-- python/ray/state.py | 2 +- python/ray/tests/test_global_state.py | 22 ++++++++++++++++++++++ 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/python/ray/dashboard/dashboard.py b/python/ray/dashboard/dashboard.py index a43cc4670..62c97d420 100644 --- a/python/ray/dashboard/dashboard.py +++ b/python/ray/dashboard/dashboard.py @@ -844,7 +844,8 @@ class NodeStats(threading.Thread): "type": error_data.type }) elif channel == str(actor_channel): - gcs_entry = ray.gcs_utils.GcsEntry.FromString(data) + gcs_entry = ray.gcs_utils.PubSubMessage.FromString( + data) actor_data = ray.gcs_utils.ActorTableData.FromString( gcs_entry.entries[0]) addr = (actor_data.address.ip_address, diff --git a/python/ray/monitor.py b/python/ray/monitor.py index 52fbd12cb..a4cf9b736 100644 --- a/python/ray/monitor.py +++ b/python/ray/monitor.py @@ -121,8 +121,8 @@ class Monitor: unused_channel: The message channel. data: The message data. """ - gcs_entries = ray.gcs_utils.GcsEntry.FromString(data) - job_data = gcs_entries.entries[0] + pub_message = ray.gcs_utils.PubSubMessage.FromString(data) + job_data = pub_message.data message = ray.gcs_utils.JobTableData.FromString(job_data) job_id = message.job_id if message.is_dead: diff --git a/python/ray/state.py b/python/ray/state.py index 23b2ef770..98d222e01 100644 --- a/python/ray/state.py +++ b/python/ray/state.py @@ -216,7 +216,7 @@ class GlobalState: if actor_id is not None: actor_id = ray.ActorID(hex_to_binary(actor_id)) - actor_info = self._aglobal_state_accessor.get_actor_info(actor_id) + actor_info = self.global_state_accessor.get_actor_info(actor_id) if actor_info is None: return {} else: diff --git a/python/ray/tests/test_global_state.py b/python/ray/tests/test_global_state.py index b5ac072a2..1dd40a995 100644 --- a/python/ray/tests/test_global_state.py +++ b/python/ray/tests/test_global_state.py @@ -106,6 +106,28 @@ def test_global_state_actor_table(ray_start_regular): assert get_state() == dead_state +def test_global_state_actor_entry(ray_start_regular): + @ray.remote + class Actor: + def ready(self): + pass + + # actor table should be empty at first + assert len(ray.actors()) == 0 + + a = Actor.remote() + b = Actor.remote() + ray.get(a.ready.remote()) + ray.get(b.ready.remote()) + assert len(ray.actors()) == 2 + a_actor_id = a._actor_id.hex() + b_actor_id = b._actor_id.hex() + assert ray.actors(actor_id=a_actor_id)["ActorID"] == a_actor_id + assert ray.actors(actor_id=a_actor_id)["State"] == 1 + assert ray.actors(actor_id=b_actor_id)["ActorID"] == b_actor_id + assert ray.actors(actor_id=b_actor_id)["State"] == 1 + + if __name__ == "__main__": import pytest import sys