8245462: HttpClient send throws InterruptedException when interrupted but does not cancel request
Michael McMahon
michael.x.mcmahon at oracle.com
Fri Jul 31 12:00:33 UTC 2020
Hi Daniel,
Good to see that produced useful results. I think it would be a good idea
to separate the two additional fixes if possible. That would certainly
make back-porting a lot easier.
Thanks,
Michael.
On 31/07/2020 10:46, Daniel Fuchs wrote:
> Thanks for suggesting this course of action Michael!
>
> This flushed out two additional bugs in our stack, which I believe
> are probably at the root of some of the rare intermittent failures
> we have been observing in the Throwing* tests:
>
> - 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.
>
> - 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".
>
> The following webrev includes these two additional fixes, and I have
> now very stable test runs. I wonder if I should try to extract those
> two fixes though - as it might be worthwile to backport
> them independently:
>
> http://cr.openjdk.java.net/~dfuchs/webrev_8245462/webrev.01/index.html
>
> best regards,
>
> -- daniel
>
> On 28/07/2020 15:19, Daniel Fuchs wrote:
>> On 28/07/2020 15:04, Michael McMahon wrote:
>>> The code is technically racy on the GET test, but it's often the
>>> case when you want
>>> something to be racy then it turns out not to be in practice, 99
>>> times out of a 100 anyway
>>> (figures made up). I was thinking you could put a random sleep on
>>> the client side before calling
>>> cancel (say between 1ms and the SERVER_LATENCY constant). Print out
>>> the random value too
>>> in case it finds a problem.
>>
>> Oh - that's a good point. Let me try that.
>>
>> best regards,
>>
>> -- daniel
>>
>
More information about the net-dev
mailing list