On Thu, Feb 24, 2022 at 10:31 AM Istvan SZEKELY
<istvan.szek...@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

Reply via email to