dlmarion commented on issue #5411:
URL: https://github.com/apache/accumulo/issues/5411#issuecomment-2734458636

   I created #5415 for this specific issue. However, I think the logging that 
is happening in the original description would happen for any `oneway` Thrift 
RPC that throws an exception. If you look at the generated code for 
`waitForBalance`, which is not a `oneway` function and declares in the IDL that 
`ThriftNotActiveServiceException` is thrown, you will see that it catches the 
exception and sets it as the result to return to the caller.
   
   
https://github.com/apache/accumulo/blob/ae9b6a783fcfc3581f9253180961af429dbc7904/core/src/main/thrift-gen-java/org/apache/accumulo/core/manager/thrift/ManagerClientService.java#L2531-L2541
   
   If you look at the code for `reportTabletStatus`, which is a `oneway` 
function and cannot declare any exceptions being throw, it does not catch any 
exception. So when the ThriftNotActiveServiceException is thrown from the proxy 
that we create, it's captured by `ProcessFunction` and handled badly there.
   
   
https://github.com/apache/accumulo/blob/ae9b6a783fcfc3581f9253180961af429dbc7904/core/src/main/thrift-gen-java/org/apache/accumulo/core/manager/thrift/ManagerClientService.java#L2563-L2568
   
   
   It occurs to me that if we regenerated the Thrift code using the 
`rethrow_unhandled_exceptions` option, then the exceptions thrown from our code 
would be wrapped by RuntimeExceptions and propogated up the stack. If we had 
our own custom TMultiplexedProcessor and used it in all cases, we could handle 
those exceptions there, and likely in a better fashion.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to