Details

      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)
      • 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

        Attachments

        1. TAJO-1563.patch
          146 kB
          Jinho Kim
        2. TAJO-1563_2.patch
          149 kB
          Jinho Kim
        3. TAJO-1563_3.patch
          152 kB
          Jinho Kim
        4. TAJO-1563_4.patch
          152 kB
          Jinho Kim

          Issue Links

            Activity

              People

              • Assignee:
                jhkim Jinho Kim
                Reporter:
                jhkim Jinho Kim
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: