You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
io.helidon.webserver.MaxPayloadSizeTest fails on Windows with java.io.IOException: An established connection was aborted by the software in your host machine.
This is intermittent, however it fails half of the time in my local Windows VM. This was reported by @tvallin while working on #6717.
The key difference is that when it works we get this:
ACTIVE
READ: 60B
CLOSE
READ COMPLETE
FLUSH
However when it fails we get this:
ACTIVE
READ COMPLETE
FLUSH
EXCEPTION: java.io.IOException:An established connection was aborted by the software in your host machine
Since JDK13 and JEP 353 Windows Socket error codes use system messages.
The error message An established connection was aborted by the software in your host machine corresponds to the following:
Return code/value
Description
WSAECONNABORTED 10053
Software caused connection abort. An established connection was aborted by the software in your host computer, possibly due to a data transmission time-out or protocol error.
Server returns a response without reading the full request, and closes the connection
Meanwhile, client is still writing data into an half-open connection, data is buffered to Winsock
Outgoing retransmission fails and Winsock shuts down the connection
Client fails to read the HTTP response
The test has been passing reliably on UNIX (Linux and MacOS), however it is clearly not reliable on Windows and it does not seem to be something we can fix with configuration.
We should avoid running this test on Windows for now.
If the test starts failing intermittently on UNIX, we can decide to re-write it to accept IOException as valid.
The text was updated successfully, but these errors were encountered:
Seems like a rather OS specific behavior. There's a few things that we can potentially do:
Make the payload in the test smaller hoping it gets sent in one chunk
Handle IOException and either (a) try to read the response if possible or (b) simply accept the test as valid.
In general, handling the exception seems like a reasonable option. I would volunteer to explore this if I had a Win VM ready to go. Perhaps someone with such a VM or a machine can try these options.
io.helidon.webserver.MaxPayloadSizeTest
fails on Windows withjava.io.IOException: An established connection was aborted by the software in your host machine
.This is intermittent, however it fails half of the time in my local Windows VM. This was reported by @tvallin while working on #6717.
See the full stack trace:
Here is some relevant snippet of logs with level
ALL
when the test fails:Here is the equivalent when the test passes:
The key difference is that when it works we get this:
However when it fails we get this:
Since JDK13 and JEP 353 Windows Socket error codes use system messages.
The error message
An established connection was aborted by the software in your host machine
corresponds to the following:10053
An established connection was aborted by the software in your host computer, possibly due to a data transmission time-out or protocol error.
I found a good explanation of this issue here: https://www.chilkatsoft.com/p/p_299.asp
Here is a TLDR:
The test has been passing reliably on UNIX (Linux and MacOS), however it is clearly not reliable on Windows and it does not seem to be something we can fix with configuration.
We should avoid running this test on Windows for now.
If the test starts failing intermittently on UNIX, we can decide to re-write it to accept IOException as valid.
The text was updated successfully, but these errors were encountered: