Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
1.3.0
-
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.