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

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

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 1.3.0
    • Future
    • Execution - RPC
    • 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

            Unassigned Unassigned
            adeneche Abdel Hakim Deneche
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: