mirror of
https://github.com/wassname/ray.git
synced 2026-06-29 06:33:06 +08:00
[xlang] Cross language serialization for ActorHandle (#10335)
This commit is contained in:
@@ -167,23 +167,21 @@ public class CrossLanguageInvocationTest extends BaseMultiLanguageTest {
|
||||
// Create a java actor, and pass actor handle to python.
|
||||
ActorHandle<TestActor> javaActor = Ray.actor(TestActor::new, "1".getBytes()).remote();
|
||||
Preconditions.checkState(javaActor instanceof NativeActorHandle);
|
||||
byte[] actorHandleBytes = ((NativeActorHandle) javaActor).toBytes();
|
||||
ObjectRef<byte[]> res = Ray.task(
|
||||
PyFunction.of(PYTHON_MODULE,
|
||||
"py_func_call_java_actor_from_handle",
|
||||
byte[].class),
|
||||
actorHandleBytes).remote();
|
||||
javaActor).remote();
|
||||
Assert.assertEquals(res.get(), "12".getBytes());
|
||||
// Create a python actor, and pass actor handle to python.
|
||||
PyActorHandle pyActor = Ray.actor(
|
||||
PyActorClass.of(PYTHON_MODULE, "Counter"), "1".getBytes()).remote();
|
||||
Preconditions.checkState(pyActor instanceof NativeActorHandle);
|
||||
actorHandleBytes = ((NativeActorHandle) pyActor).toBytes();
|
||||
res = Ray.task(
|
||||
PyFunction.of(PYTHON_MODULE,
|
||||
"py_func_call_python_actor_from_handle",
|
||||
byte[].class),
|
||||
actorHandleBytes).remote();
|
||||
pyActor).remote();
|
||||
Assert.assertEquals(res.get(), "3".getBytes());
|
||||
}
|
||||
|
||||
@@ -301,9 +299,8 @@ public class CrossLanguageInvocationTest extends BaseMultiLanguageTest {
|
||||
return l;
|
||||
}
|
||||
|
||||
public static byte[] callPythonActorHandle(byte[] value) {
|
||||
public static byte[] callPythonActorHandle(PyActorHandle actor) {
|
||||
// This function will be called from test_cross_language_invocation.py
|
||||
NativePyActorHandle actor = (NativePyActorHandle) NativeActorHandle.fromBytes(value);
|
||||
ObjectRef<byte[]> res = actor.task(
|
||||
PyActorMethod.of("increase", byte[].class),
|
||||
"1".getBytes()).remote();
|
||||
|
||||
@@ -59,17 +59,13 @@ def py_func_call_java_actor(value):
|
||||
|
||||
|
||||
@ray.remote
|
||||
def py_func_call_java_actor_from_handle(value):
|
||||
assert isinstance(value, bytes)
|
||||
actor_handle = ray.actor.ActorHandle._deserialization_helper(value)
|
||||
def py_func_call_java_actor_from_handle(actor_handle):
|
||||
r = actor_handle.concat.remote(b"2")
|
||||
return ray.get(r)
|
||||
|
||||
|
||||
@ray.remote
|
||||
def py_func_call_python_actor_from_handle(value):
|
||||
assert isinstance(value, bytes)
|
||||
actor_handle = ray.actor.ActorHandle._deserialization_helper(value)
|
||||
def py_func_call_python_actor_from_handle(actor_handle):
|
||||
r = actor_handle.increase.remote(2)
|
||||
return ray.get(r)
|
||||
|
||||
@@ -79,7 +75,7 @@ def py_func_pass_python_actor_handle():
|
||||
counter = Counter.remote(2)
|
||||
f = ray.java_function("io.ray.test.CrossLanguageInvocationTest",
|
||||
"callPythonActorHandle")
|
||||
r = f.remote(counter._serialization_helper()[0])
|
||||
r = f.remote(counter)
|
||||
return ray.get(r)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user