Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
Currently, RPC does not handle error for disconnection and a client does not throw if async RPC failed.
for example. when a client calling and then it has lost a connection, callback has not been called.
Callfuture.get() should throw ExecutionException and RPC client should handle a recoverable exception
- Server internal exception handling
- Application exceptions
- send RemoteCallException to client
- Unexpected exceptions (Server failure)
- close current channel (client will receive channel inactive event)
- Application exceptions
- Client internal exception handling
- Add internal retry when a stub is failed by connection lost
- Application exceptions
- throw exception to callback
- Max retry exceeded
- throw RecoverableException to internal exception handler
- Server hangs(server shutdown, OOM..)
- trigger the ping expired event. and throw ServiceException
- Unexpected exceptions (Client failure, connection lost)
- throw exception to all callback