Uploaded image for project: 'Apache Drill'
  1. Apache Drill
  2. DRILL-4197

RpcBus.run() only sends a failure when a UserRpcException is caught

Attach filesAttach ScreenshotAdd voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 1.3.0
    • Fix Version/s: Future
    • Component/s: Execution - RPC
    • Labels:
      None

      Description

      RpcBus.run is implemented as follows:

          public void run() {
            try {
              handle(connection, rpcType, pBody, dBody, sender);
            } catch (UserRpcException e) {
              sender.sendFailure(e);
            } catch (Exception e) {
              logger.error("Failure while handling message.", e);
            }finally{
              if(pBody != null){
                pBody.release();
              }
      
              if(dBody != null){
                dBody.release();
              }
            }
          }
      

      If an exception is thrown that is not a UserRpcException, it will just be logged and won't be propagated to the sender as a failure.

      For example, if we are starting a remote leaf fragment and we get an InvalidProtobufException, the Foreman will never be notified that the leaf failed to start, and the query hangs forever.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              adeneche Abdel Hakim Deneche

              Dates

              • Created:
                Updated:

                Issue deployment