On Mon, Feb 28, 2022 at 4:39 PM Istvan SZEKELY <istvan.szek...@shiwaforce.com> wrote: > > I've written a NonBlocking ReadWrite test (testDelayedNBReadWrite, in the > attached file). I'm not sure if it is a valid test case (though works on > 8.5.73, fails on 8.5.75). If it is valid, i can make a PR if needed.
Thanks for the test, this is what I had in mind. As I kind of expected when reading about the sequential technique used, the previous fix was causing a new problem since the thread id was not reset until the full recycle, making the new check inaccurate as well in another scenario. https://github.com/apache/tomcat/commit/2739565fa5286623e8bb31823770595de14b6370 The fix will be in the next round of monthly releases (9.0.60). Thanks ! Rémy > > On 2022/02/24 10:42:29 Rémy Maucherat wrote: > > On Thu, Feb 24, 2022 at 10:31 AM Istvan SZEKELY > > <is...@shiwaforce.com> wrote: > > > > > > 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? > > > > I think I see the problem, but would you have test code or example > > like this testcase to submit ? > > https://github.com/apache/tomcat/blob/main/test/org/apache/catalina/nonblocking/TestNonBlockingAPI.java#L951 > > It would allow verifying and validating a fix. > > > > Rémy > > > > > Thank You in Advance, > > > Istvan > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > > For additional commands, e-mail: users-h...@tomcat.apache.org > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org