From 7f1f16d99eb4749f34de7b88fe458169738e837b Mon Sep 17 00:00:00 2001 From: Ian Rodney Date: Mon, 23 Nov 2020 12:38:16 -0800 Subject: [PATCH] [Core] Force get_actor(name)'s name to be non-empty string (#12218) --- .../src/main/java/io/ray/runtime/RayNativeRuntime.java | 3 +++ python/ray/tests/test_actor_advanced.py | 6 ++++++ python/ray/worker.py | 2 ++ 3 files changed, 11 insertions(+) diff --git a/java/runtime/src/main/java/io/ray/runtime/RayNativeRuntime.java b/java/runtime/src/main/java/io/ray/runtime/RayNativeRuntime.java index 32663e391..ee0f16e50 100644 --- a/java/runtime/src/main/java/io/ray/runtime/RayNativeRuntime.java +++ b/java/runtime/src/main/java/io/ray/runtime/RayNativeRuntime.java @@ -216,6 +216,9 @@ public final class RayNativeRuntime extends AbstractRayRuntime { @SuppressWarnings("unchecked") @Override public Optional getActor(String name, boolean global) { + if (name.isEmpty()) { + return Optional.empty(); + } byte[] actorIdBytes = nativeGetActorIdOfNamedActor(name, global); ActorId actorId = ActorId.fromBytes(actorIdBytes); if (actorId.isNil()) { diff --git a/python/ray/tests/test_actor_advanced.py b/python/ray/tests/test_actor_advanced.py index b599ec5c1..a812c6731 100644 --- a/python/ray/tests/test_actor_advanced.py +++ b/python/ray/tests/test_actor_advanced.py @@ -1032,6 +1032,12 @@ def test_kill(ray_start_regular_shared): ray.kill("not_an_actor_handle") +def test_get_actor_no_input(ray_start_regular_shared): + for bad_name in [None, "", " "]: + with pytest.raises(ValueError): + ray.get_actor(bad_name) + + if __name__ == "__main__": import pytest sys.exit(pytest.main(["-v", __file__])) diff --git a/python/ray/worker.py b/python/ray/worker.py index 1db6031c0..7eb61942b 100644 --- a/python/ray/worker.py +++ b/python/ray/worker.py @@ -1538,6 +1538,8 @@ def get_actor(name): Raises: ValueError if the named actor does not exist. """ + if not name: + raise ValueError("Please supply a non-empty value to get_actor") worker = global_worker worker.check_connected() handle = worker.core_worker.get_named_actor_handle(name)