2016-10-20 21:47 GMT+03:00 Mark Thomas <ma...@apache.org>:
>
> On 20/10/2016 14:08, Violeta Georgieva wrote:
> > Hi,
> >
> > I have a question about ServletOutputStream.setWriteListener.
> >
> > I have the following scenario:
> > - Request 1 - in the servlet service method it starts async operation
and
> > starts waiting for a particular notification
> > - Request 2  - in the servlet service method it starts async operation
and
> > notifies the Request 1 to write to the response
> > - During this notification Request 1 sets WriteListener. This happens
while
> > we are still in the service method of the servlet for Request 2 i.e.
this
> > happens in the thread that processes Request 2.
> > - Request 1 starts waiting for onWritePossible but the event is never
sent.
> >
> > So the question is whether it is allowed to set the WriteListener from
the
> > thread that is processing another request?
>
> Yes, but we don't handle that very well. That looks like a bug to me.
>
> > I can see that when setWriteListener is invoked [1] we add to the
> > dispatches - NON_BLOCKING_WRITE - this is a result of the DISPATCH_WRITE
> > action.
> > But I think that we have to invoke DISPATCH_EXECUTE.
> >
> > I tried to extract one very simple example [2] that shows the scenario.
>
> Can you turn that into a unit test for the AsyncContext?

http://svn.apache.org/viewvc?view=revision&revision=1765995
I added a test. It is marked with @Ignore as it will fail with the current
implementation.

Thanks,
Violeta

> Mark
>
>
> >
> > What do you think?
> >
> > Thanks,
> > Violeta
> >
> > [1]
> >
https://github.com/apache/tomcat/blob/trunk/java/org/apache/coyote/Response.java#L607
> > [2] https://github.com/violetagg/test-write-listener
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>

Reply via email to