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
Async Content Complete bug results in org.eclipse.jetty.io.EofException: Async closed #4376
Comments
The reproduction code provided here seems to overlap with ... |
Unsure, as I do invoke
Any other means to figure "is last write done"? |
@cstamas I've been able to reproduce and we understand the problem and have a fix. The good news is that these exceptions are mostly ignorable... unless you have significant code in your onComplete handling. Standby for a fix. |
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>
PR #4377 |
ERROR state still needs to be closed! Signed-off-by: Greg Wilkins <gregw@webtide.com>
close after last blocking write Signed-off-by: Greg Wilkins <gregw@webtide.com>
If completion has to do a flush, then we need a call to closed to avoid leaking buffers. Signed-off-by: Greg Wilkins <gregw@webtide.com>
As I debugged, I assumed as well that those EofExceptions are kinda "ignorable", but would be uneasy to have Jetty in prod that produces logspam, or worse, to have to "mute" Jetty and then maybe miss some important things from Jetty. So am fine waiting for fix, I guess in 9.4.25? |
Reformat Signed-off-by: Greg Wilkins <gregw@webtide.com>
* Issue #4376 Async Content Complete 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> * Issue #4376 Async Content Complete ERROR state still needs to be closed! Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4376 Async Content Complete close after last blocking write Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4376 Async Content Complete If completion has to do a flush, then we need a call to closed to avoid leaking buffers. Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4376 Async Content Complete Reformat Signed-off-by: Greg Wilkins <gregw@webtide.com>
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>
* Issue #4376 Async Content Complete 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> * Issue #4331 Async Write Complete Test harness to reproduce unready when closing/completing. Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Async Write Complete test both PENDING and UNREADY Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Async Write Complete test cleanups Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Async Close Complete Cleanups of write Signed-off-by: Greg Wilkins <gregw@webtide.com> * WIP Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete Work in progress Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete Added async close to HttpWriter and ResponseWriter Always use async close, with blocker if necessary. Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete Working async close complete! Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete invert test as we can now call complete when not ready! Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete fixed transition to ERROR state Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete async close after onError Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete minor cleanups Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete Fix for proxy tests Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete Fix write loop to handle clear of p=0,l=0 rather than p=l Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete Removed old close on all content mechanism Cleanups and some more TODOs Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete a reworking of HttpOutput to separate out API state. Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete Soft close for Dispatcher release buffer in onWriteComplete Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete Set _onError in onWriteComplete NOOP callback instead of null Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete failure closes HttpOutput Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete Moved closedCallback handling to onWriteComplete Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete Additional test of complete during blocking write. Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete reimplemented blocking close to sometimes be async Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete ascii "art" Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete 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> * Issue #4331 Close Complete Do not dispatch Better ascii art improved close impl to be similar to complete Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete More test cases Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete retain execute behaviour in 9.4. review in 10. Signed-off-by: Greg Wilkins <gregw@webtide.com> * Improved javadoc and ascii art * Improved CLOSING 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 * WIP Aggregate within lock pipeline test debug * Avoid creating ignored exception when Idle or Failed. * Try a parse without fill to avoid unconsumed input debug * fixed pipeline size * release buffer before callback * turn off debug Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete Better javadoc refactored onWriteComplete logic to be simpler fixed bug with flush of last written byte Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete Completely reworked test harness for better coverage. Signed-off-by: Greg Wilkins <gregw@webtide.com> * Issue #4331 Close Complete Reworked order of ifs to match logic above in onWriteComplete Signed-off-by: Greg Wilkins <gregw@webtide.com>
Our bad, sorry for noise. |
whew 😌, you had some worried people 😟 over here! |
Just to confirm, load testing on our QA system shows no errors whatsoever (LB left out of equation), so we are fine here. This issue is fixed as far as am concerned, the log noise "Async closed" is gone, actually, we had no errors at all on server/jetty side. Sorry again for hasty report above! |
@cstamas thanks for the feedback! Closing this issue. |
Jetty version
jetty-9.4.24.v20191120; built: 2019-11-20T21:37:49.771Z; git: 363d5f2;
Java version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.232-b09, mixed mode)
OS type/version
Linux Urnebes 4.15.0-70-generic #79-Ubuntu SMP Tue Nov 12 10:36:11 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Linux Mint 19.2
Description
Am getting sporadic errors on server side
org.eclipse.jetty.io.EofException: Async closed
To reproduce:
Servlet:
web.xml
Am using maven
jetty:run
to run it.Client side: just fire up several clients, for example:
And server will start spitting out errors:
Am I doing something wrong in servlet?
The text was updated successfully, but these errors were encountered: