[Core] Allow creating tasks/actors in a detached actor when driver has exited (#11493)

* Allow creating tasks/actors in a detached actor when driver has exited

* lint

* Address comment
This commit is contained in:
Kai Yang
2020-10-22 01:45:29 +08:00
committed by Alex Wu
parent cac4c82c8a
commit a2e12ceb2a
3 changed files with 27 additions and 9 deletions
+16
View File
@@ -693,11 +693,24 @@ ray.init(address="{}")
existing_actor = ray.get_actor("{}")
assert ray.get(existing_actor.ping.remote()) == "pong"
@ray.remote
def foo():
return "bar"
@ray.remote
class NonDetachedActor:
def foo(self):
return "bar"
@ray.remote
class DetachedActor:
def ping(self):
return "pong"
def foobar(self):
actor = NonDetachedActor.remote()
return ray.get([foo.remote(), actor.foo.remote()])
actor = DetachedActor._remote(lifetime="detached", name="{}")
ray.get(actor.ping.remote())
""".format(redis_address, get_actor_name, create_actor_name)
@@ -705,6 +718,9 @@ ray.get(actor.ping.remote())
run_string_as_driver(driver_script)
detached_actor = ray.get_actor(create_actor_name)
assert ray.get(detached_actor.ping.remote()) == "pong"
# Verify that a detached actor is able to create tasks/actors
# even if the driver of the detached actor has exited.
assert ray.get(detached_actor.foobar.remote()) == ["bar", "bar"]
def test_detached_actor_cleanup(ray_start_regular):