New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Jetty 9.4.x 4331 async close complete3 #4409
Conversation
Added test harness to reproduce unready completing write. Fixed test by not closing output prior to becoming READY Signed-off-by: Greg Wilkins <gregw@webtide.com>
Test harness to reproduce unready when closing/completing. Signed-off-by: Greg Wilkins <gregw@webtide.com>
test both PENDING and UNREADY Signed-off-by: Greg Wilkins <gregw@webtide.com>
test cleanups Signed-off-by: Greg Wilkins <gregw@webtide.com>
Cleanups of write Signed-off-by: Greg Wilkins <gregw@webtide.com>
…31-asyncCloseComplete2
Work in progress Signed-off-by: Greg Wilkins <gregw@webtide.com>
Added async close to HttpWriter and ResponseWriter Always use async close, with blocker if necessary. Signed-off-by: Greg Wilkins <gregw@webtide.com>
Working async close complete! Signed-off-by: Greg Wilkins <gregw@webtide.com>
invert test as we can now call complete when not ready! Signed-off-by: Greg Wilkins <gregw@webtide.com>
fixed transition to ERROR state Signed-off-by: Greg Wilkins <gregw@webtide.com>
async close after onError Signed-off-by: Greg Wilkins <gregw@webtide.com>
minor cleanups Signed-off-by: Greg Wilkins <gregw@webtide.com>
Fix for proxy tests Signed-off-by: Greg Wilkins <gregw@webtide.com>
Fix write loop to handle clear of p=0,l=0 rather than p=l Signed-off-by: Greg Wilkins <gregw@webtide.com>
Removed old close on all content mechanism Cleanups and some more TODOs Signed-off-by: Greg Wilkins <gregw@webtide.com>
a reworking of HttpOutput to separate out API state. Signed-off-by: Greg Wilkins <gregw@webtide.com>
Soft close for Dispatcher release buffer in onWriteComplete Signed-off-by: Greg Wilkins <gregw@webtide.com>
Set _onError in onWriteComplete NOOP callback instead of null Signed-off-by: Greg Wilkins <gregw@webtide.com>
failure closes HttpOutput Signed-off-by: Greg Wilkins <gregw@webtide.com>
Moved closedCallback handling to onWriteComplete Signed-off-by: Greg Wilkins <gregw@webtide.com>
Additional test of complete during blocking write. Signed-off-by: Greg Wilkins <gregw@webtide.com>
reimplemented blocking close to sometimes be async Signed-off-by: Greg Wilkins <gregw@webtide.com>
ascii "art" Signed-off-by: Greg Wilkins <gregw@webtide.com>
Code cleanup. Use a CLOSE state rather than non null closedCallback to be clearer that it is a state. Renamed close(Callback) to complete(Callback) Renamed and simplified closed() to completed() Signed-off-by: Greg Wilkins <gregw@webtide.com>
Do not dispatch Better ascii art improved close impl to be similar to complete Signed-off-by: Greg Wilkins <gregw@webtide.com>
More test cases Signed-off-by: Greg Wilkins <gregw@webtide.com>
retain execute behaviour in 9.4. review in 10. Signed-off-by: Greg Wilkins <gregw@webtide.com>
@lachlan-roberts @sbordet This is ready for proper review. Would be good to get a green tick early Monday so we can start a release cycle. |
jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java
Outdated
Show resolved
Hide resolved
Switch to CLOSING state as soon as last write is done, even if several non last channelWrites will be done. This allows a subsequent call to close to know that nothing needs to be written and can avoid some EOF exceptions. Now onWriteComplete acts only on the passed in last parameter. Added test for sendContent
@sbordet @lachlan-roberts I'm am getting the failure in the attached log very occassionally... only one one laptop... only once in about 1000 runs... but sometimes 10 times in a row!!! |
@sbordet @lachlan-roberts I think I found the problem... I was calling the closedCallback and then releasing the buffer. I've inverted that order and now it does not fail. |
Signed-off-by: Greg Wilkins <gregw@webtide.com>
Better javadoc refactored onWriteComplete logic to be simpler fixed bug with flush of last written byte Signed-off-by: Greg Wilkins <gregw@webtide.com>
Completely reworked test harness for better coverage. Signed-off-by: Greg Wilkins <gregw@webtide.com>
92% code coverage of HttpOutput with current tests |
@sbordet review please |
…31-asyncCloseComplete3
Reworked order of ifs to match logic above in onWriteComplete Signed-off-by: Greg Wilkins <gregw@webtide.com>
This replaces #4398 as a fix for #4331
This PR breaks out the HttpOutput state into api state and close state.