Hello! I have an application where a ReadListener and a WriteListener (call it MyWriteListener) set to the ServletInputStream and the ServletOutputStream objects. Updating the Tomcat container from 8.5.73 to 8.5.75, the follow error occured. The ServletOutputStream objects's isReady function always returns false (within MyWriteListener.onWritePossible).
I think its because of this commit: https://github.com/apache/tomcat/commit/2bfbbef65d1b1b07da46c8dcd6cee96cb5567998#diff-1ffbc1c154370a6c5385c168a0846a1c385aacbf5f880feb74cb1c27baa76003 The ReadListener is set first, where dispatch fired (action(ActionCode.DISPATCH_EXECUTE, null);). There the request threadId updated (req.setRequestThread();). Then when i'm setting the WriteListener (within the same thread), the DISPACTH_EXECUTE action not fired (due to threadId equals request objects thread id). Thus registeredForWrite flag remains is true state, causing the isReady false behaviour. Is this a Tomcat bug, or I should do something differently. I could't set WriteListener within a different thread, but it feels weird. Should i do something else? Thank You in Advance, Istvan