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

Reply via email to