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)