8229822: ThrowingPushPromises tests sometimes fail due to EOF

Chris Hegarty chris.hegarty at oracle.com
Fri Aug 7 11:04:06 UTC 2020


Daniel,

> On 31 Jul 2020, at 15:56, Daniel Fuchs <daniel.fuchs at oracle.com> wrote:
> 
> Hi,
> 
> Please find below a fix for:
> 
> 8229822: ThrowingPushPromises tests sometimes fail due to EOF
> https://bugs.openjdk.java.net/browse/JDK-8229822
> 
> While trying to write a good test for JDK-8245462 I stumbled
> on two issues - which I believe are at the root of the
> ThrowingPushPromises failures:
> 
>  - SocketTube: I found an issue where the scheduler might not
>       be restarted if resuming/pausing event from within
>       the scheduler loop (that runs in the selector manager
>       thread) failed due to the socket being asynchronously
>       closed by another thread.
>       That could cause some tests to fail in timeout.

Good sleuthing. I’m surprised that we’ve not come across this
before, but what you have seems to catch these corner cases,
( the last one on L889 was non-obvious ).

>   - Http2Connection/Stream: there was an issue where DataFrames
>       could be sent after a ResetFrame was sent. That caused the
>       server to close down the connection. The next test would
>       start opening a new stream on the same connection while
>       the server was concurrently closing it, and the test
>       would eventually fail - sometimes with a message saying
>       "EOF reached while reading”.

Wow, there’s a lot going on in this change, that covers cases where
connection / streams are closed at various different points especially
very early in their lifecycle. 

> The webrev below includes these two fixes; The test have simply been
> update to list 8229822 for verification purposes.
> 
> webrev:
> http://cr.openjdk.java.net/~dfuchs/webrev_8229822/webrev.00/

I think that this is fine, and I know that you have further changes
coming to add additional tests and scenarios where closure /
cancellation can occur.

-Chris.



More information about the net-dev mailing list