diff --git a/java/runtime/src/main/java/io/ray/runtime/task/LocalModeTaskSubmitter.java b/java/runtime/src/main/java/io/ray/runtime/task/LocalModeTaskSubmitter.java index d729692d2..c2c3e8616 100644 --- a/java/runtime/src/main/java/io/ray/runtime/task/LocalModeTaskSubmitter.java +++ b/java/runtime/src/main/java/io/ray/runtime/task/LocalModeTaskSubmitter.java @@ -174,9 +174,11 @@ public class LocalModeTaskSubmitter implements TaskSubmitter { = new LocalModeActorHandle(actorId, getReturnIds(taskSpec).get(0)); actorHandles.put(actorId, actorHandle.copy()); if (StringUtils.isNotBlank(options.name)) { - Preconditions.checkArgument(!namedActors.containsKey(options.name), - String.format("Actor of name %s exists", options.name)); - namedActors.put(options.name, actorHandle); + String fullName = options.global ? options.name : + String.format("%s-%s", Ray.getRuntimeContext().getCurrentJobId(), options.name); + Preconditions.checkArgument(!namedActors.containsKey(fullName), + String.format("Actor of name %s exists", fullName)); + namedActors.put(fullName, actorHandle); } return actorHandle; } @@ -215,11 +217,11 @@ public class LocalModeTaskSubmitter implements TaskSubmitter { public Optional getActor(String name, boolean global) { String fullName = global ? name : String.format("%s-%s", Ray.getRuntimeContext().getCurrentJobId(), name); - if (namedActors.containsKey(fullName)) { - return Optional.of(namedActors.get(fullName)); - } else { + ActorHandle actorHandle = namedActors.get(fullName); + if (null == actorHandle) { return Optional.empty(); } + return Optional.of(actorHandle); } public void shutdown() { diff --git a/java/test/src/main/java/io/ray/test/NamedActorTest.java b/java/test/src/main/java/io/ray/test/NamedActorTest.java index b9bdb2dfe..ec7ef7dbf 100644 --- a/java/test/src/main/java/io/ray/test/NamedActorTest.java +++ b/java/test/src/main/java/io/ray/test/NamedActorTest.java @@ -52,26 +52,28 @@ public class NamedActorTest extends BaseTest { Assert.assertEquals(namedActor.get().task(Counter::increment).remote().get(), Integer.valueOf(2)); - // Get the global actor from another driver. - RayConfig rayConfig = TestUtils.getRuntime().getRayConfig(); - ProcessBuilder builder = new ProcessBuilder( - "java", - "-cp", - System.getProperty("java.class.path"), - "-Dray.redis.address=" + rayConfig.getRedisAddress(), - "-Dray.object-store.socket-name=" + rayConfig.objectStoreSocketName, - "-Dray.raylet.socket-name=" + rayConfig.rayletSocketName, - "-Dray.raylet.node-manager-port=" + rayConfig.getNodeManagerPort(), - NamedActorTest.class.getName(), - name); - builder.redirectError(ProcessBuilder.Redirect.INHERIT); - Process driver = builder.start(); - Assert.assertTrue(driver.waitFor(60, TimeUnit.SECONDS)); - Assert.assertEquals(driver.exitValue(), 0, - "The driver exited with code " + driver.exitValue()); + if (!TestUtils.isSingleProcessMode()) { + // Get the global actor from another driver. + RayConfig rayConfig = TestUtils.getRuntime().getRayConfig(); + ProcessBuilder builder = new ProcessBuilder( + "java", + "-cp", + System.getProperty("java.class.path"), + "-Dray.redis.address=" + rayConfig.getRedisAddress(), + "-Dray.object-store.socket-name=" + rayConfig.objectStoreSocketName, + "-Dray.raylet.socket-name=" + rayConfig.rayletSocketName, + "-Dray.raylet.node-manager-port=" + rayConfig.getNodeManagerPort(), + NamedActorTest.class.getName(), + name); + builder.redirectError(ProcessBuilder.Redirect.INHERIT); + Process driver = builder.start(); + Assert.assertTrue(driver.waitFor(60, TimeUnit.SECONDS)); + Assert.assertEquals(driver.exitValue(), 0, + "The driver exited with code " + driver.exitValue()); - Assert.assertEquals(namedActor.get().task(Counter::increment).remote().get(), - Integer.valueOf(4)); + Assert.assertEquals(namedActor.get().task(Counter::increment).remote().get(), + Integer.valueOf(4)); + } } public static void main(String[] args) {