From 1b7b83969b2d594af5fc96e8b8b9bb6d2e5602c5 Mon Sep 17 00:00:00 2001 From: Robert Nishihara Date: Thu, 14 Jun 2018 17:32:31 -0700 Subject: [PATCH 1/2] Make actor handles work in local mode. --- python/ray/actor.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/python/ray/actor.py b/python/ray/actor.py index 51756b1a00fe..f99f651ff42b 100644 --- a/python/ray/actor.py +++ b/python/ray/actor.py @@ -884,13 +884,13 @@ def _serialization_helper(self, ray_forking): "actor_id": self._ray_actor_id.id(), "class_name": self._ray_class_name, "actor_forks": self._ray_actor_forks, - "actor_cursor": self._ray_actor_cursor.id(), + "actor_cursor": self._ray_actor_cursor.id() if self._ray_actor_cursor is not None else None, "actor_counter": 0, # Reset the actor counter. "actor_method_names": self._ray_actor_method_names, "method_signatures": self._ray_method_signatures, "method_num_return_vals": self._ray_method_num_return_vals, "actor_creation_dummy_object_id": self. - _ray_actor_creation_dummy_object_id.id(), + _ray_actor_creation_dummy_object_id.id() if self._ray_actor_creation_dummy_object_id is not None else None, "actor_method_cpus": self._ray_actor_method_cpus, "actor_driver_id": self._ray_actor_driver_id.id(), "previous_actor_handle_id": self._ray_actor_handle_id.id() @@ -929,12 +929,12 @@ def _deserialization_helper(self, state, ray_forking): self.__init__( ray.ObjectID(state["actor_id"]), state["class_name"], - ray.ObjectID(state["actor_cursor"]), + ray.ObjectID(state["actor_cursor"]) if state["actor_cursor"] is not None else None, state["actor_counter"], state["actor_method_names"], state["method_signatures"], state["method_num_return_vals"], - ray.ObjectID(state["actor_creation_dummy_object_id"]), + ray.ObjectID(state["actor_creation_dummy_object_id"]) if state["actor_creation_dummy_object_id"] is not None else None, state["actor_method_cpus"], actor_driver_id, actor_handle_id=actor_handle_id, From 3d2d696079a6432b14cbf5229feb870616867fa8 Mon Sep 17 00:00:00 2001 From: Robert Nishihara Date: Tue, 19 Jun 2018 15:42:40 -0700 Subject: [PATCH 2/2] Add test for actor handles in local mode --- python/ray/actor.py | 12 ++++++++---- test/runtest.py | 10 ++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/python/ray/actor.py b/python/ray/actor.py index f99f651ff42b..62c3c5e68b68 100644 --- a/python/ray/actor.py +++ b/python/ray/actor.py @@ -884,13 +884,15 @@ def _serialization_helper(self, ray_forking): "actor_id": self._ray_actor_id.id(), "class_name": self._ray_class_name, "actor_forks": self._ray_actor_forks, - "actor_cursor": self._ray_actor_cursor.id() if self._ray_actor_cursor is not None else None, + "actor_cursor": self._ray_actor_cursor.id() + if self._ray_actor_cursor is not None else None, "actor_counter": 0, # Reset the actor counter. "actor_method_names": self._ray_actor_method_names, "method_signatures": self._ray_method_signatures, "method_num_return_vals": self._ray_method_num_return_vals, "actor_creation_dummy_object_id": self. - _ray_actor_creation_dummy_object_id.id() if self._ray_actor_creation_dummy_object_id is not None else None, + _ray_actor_creation_dummy_object_id.id() + if self._ray_actor_creation_dummy_object_id is not None else None, "actor_method_cpus": self._ray_actor_method_cpus, "actor_driver_id": self._ray_actor_driver_id.id(), "previous_actor_handle_id": self._ray_actor_handle_id.id() @@ -929,12 +931,14 @@ def _deserialization_helper(self, state, ray_forking): self.__init__( ray.ObjectID(state["actor_id"]), state["class_name"], - ray.ObjectID(state["actor_cursor"]) if state["actor_cursor"] is not None else None, + ray.ObjectID(state["actor_cursor"]) + if state["actor_cursor"] is not None else None, state["actor_counter"], state["actor_method_names"], state["method_signatures"], state["method_num_return_vals"], - ray.ObjectID(state["actor_creation_dummy_object_id"]) if state["actor_creation_dummy_object_id"] is not None else None, + ray.ObjectID(state["actor_creation_dummy_object_id"]) + if state["actor_creation_dummy_object_id"] is not None else None, state["actor_method_cpus"], actor_driver_id, actor_handle_id=actor_handle_id, diff --git a/test/runtest.py b/test/runtest.py index 0a20dae380df..ed209299ecd6 100644 --- a/test/runtest.py +++ b/test/runtest.py @@ -1189,6 +1189,16 @@ def modify_and_set_array(self, array): test_array[0] = -1 assert_equal(test_array, test_actor.get_array.remote()) + # Check that actor handles work in Python mode. + + @ray.remote + def use_actor_handle(handle): + array = np.ones(10) + handle.set_array.remote(array) + assert np.alltrue(array == ray.get(handle.get_array.remote())) + + ray.get(use_actor_handle.remote(test_actor)) + class ResourcesTest(unittest.TestCase): def tearDown(self):