On 18/02/2015 15:04, Mark Thomas wrote: > On 18/02/2015 14:01, Rémy Maucherat wrote: >> 2015-02-18 14:19 GMT+01:00 Mark Thomas <ma...@apache.org>: >> >>> Hmm. I've been running a test with this plus a bunch of possibly >>> unnecessary sync expansions looping over the suspect test for over an >>> hour now without any failures. >>> >>> This patch does fix a logic problem but I thought it was one that would >>> result in multiple write registrations rather than a missed registration. >>> >>> I'm going to look at this more closely until either I convince myself >>> that this change could fix the 'missed write registration' problem or >>> one of the tests fails. >>> >> >> No problem with watching the CI results for some time and see if it works. >> I tried fiddling with the write notification code some time ago, since it's >> different from 8.x, but I ran into problems, so I won't make any changes to >> it until it gets stable. > > Progress. I can reproduce a variant (where no messages are sent) of this > this easily with a debugger now. Next up, finding the root cause > followed by a fix.
After some further research, the bug is triggered by the long poll handling for NIO2. However, I don't think this is the actual root cause. My current thinking on that is that the upgrade process isn't explicitly triggering the first onWritePossible() and onDataAvailable() calls. Currently we 'work-around' this in various ways in various places - particularly WebSocket. I believe some of the problems we seeing are caused by edge cases in these work-arounds. I'm currently exploring explicitly triggering the onWritePossible() and onDataAvailable() calls but I have some more work to do on this as the work-arounds needs to be removed to avoid double registration etc. Mark --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org