On 11/08/17 15:14, Rémy Maucherat wrote: > On Fri, Aug 11, 2017 at 3:14 PM, Sergey Mashkov < > sergey.mash...@jetbrains.com> wrote: > >> Hi everyone >> >> I am experiencing race condition: from time to time when I cann to >> UpgradedServletOutputStream.setWriteListener(myCallback) servlet container >> doesn't invoke neither myCallback.onWritePossible() nor .onError. >> >> I believe the reason is that setWriteListener() method implementation sets >> listener reference _AFTER_ it schedules dispatch/registers write listener. >> I've checked regular (non-upgraded) CoyoteOutput and I see it's >> implementation does the same but in correct order. Also I see that >> UpgradedServletInputStream.setWriteListener also has such a strange order: >> > Ok, I don't see why and if I place it in the sync above there's no > testsuite issue. I'll wait for Mark to ack that though, just in case > there's a trick.
I don't see any issue with moving "this.listener = listener;" above the sync. A similar change in UpgradeServletInputStream should be fine too. Mark --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org