I have come across a few Handlers that dispatch to a worker thread these include blocking handler, resource handler and the form parsing handler.
My specific use case was with the form parsing handler. I had a bunch of handlers chained together basically as follows.
Blocking handler -> ExceptionHandler -> FormParsingHandler -> MyBlockingHandler
The form parsing handler would cause the handler to be dispatched a second time to a new executor. This made me lose the stack trace, and the Exception handler was not catching an exception being thrown inside of MyBlockingHandler.
I resolved this by basically cloning the form parsing handler and calling the parseBlocking() instead of the non blocking parse(). This is acceptable because I already dispatched to a non IO thread.
Should any handler that attempts to dispatch first check if the exchange is in an IO thread before dispatching or is there a specific use case for some handlers to always dispatch?
Thanks,
Bill