Skip to content

Fix skipped Java test cases in direct actor call mode  #5559

@kfstorm

Description

@kfstorm

Describe the problem

In #5504, we added support of direct actor call in Java. However, there are cases/features not welly supported by direct actor call. I list them below and will address them later.

  • If the returned object of an actor task was deleted by LRU, attempts to get the object should fail with an OBJECT_UNRECONSTRUCTABLE error (in Java, the UnreconstructableException). This is covered by Java test case testUnreconstructableActorObject. Currently the error is generated by raylet and in direct actor call mode raylet is not involved in actor tasks, so this error will not be put into object store and the attempts to get the object will hang.
  • Cross-language calls with byte array arguments. Byte array arguments are serialized with metadata RAW during cross-language calls, and direct actor call only supports passing parameters by value. So metadata cannot be passed to the callee. This is covered by Java test case testCallingPythonActor and is addressed in Support metadata for passing by value task arguments #5527.
  • Java test case testActorProcessDying hangs when tearing down test case, specificly, when destroying native core worker. The stack trace shows that the destructor of ClientCallManager hangs at joining the polling_thread_ thread, and the thread is waiting for cq_.Next to return. This is a case we don't know the reason. However, we tried to replace direct actor call connection from gRPC to asio, and it got fixed. So the bug should be gRPC specific.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions