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