On Wed, 13 Jan 2021 18:59:30 GMT, Daniel Fuchs <dfu...@openjdk.org> wrote:

>> PING: could you review this PR?
>
> Hi Yasumasa,
> 
> The new StreamCloseTest seems to be suffering from some race conditions; On 
> windows I saw it failing 29 times out of 50.
> 
> config StreamCloseTest.setup(): success
> test StreamCloseTest.closeTestOnException(): success
> test StreamCloseTest.normallyCloseTest(): failure
> java.io.IOException: HTTP/1.1 header parser received no bytes
>       at 
> java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:584)
>       at 
> java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:119)
>       at StreamCloseTest.normallyCloseTest(StreamCloseTest.java:134)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
>       at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>       at 
> org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
>       at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
>       at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:821)
>       at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1131)
>       at 
> org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:124)
>       at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
>       at org.testng.TestRunner.privateRun(TestRunner.java:773)
>       at org.testng.TestRunner.run(TestRunner.java:623)
>       at org.testng.SuiteRunner.runTest(SuiteRunner.java:357)
>       at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:352)
>       at org.testng.SuiteRunner.privateRun(SuiteRunner.java:310)
>       at org.testng.SuiteRunner.run(SuiteRunner.java:259)
>       at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
>       at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
>       at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185)
>       at org.testng.TestNG.runSuitesLocally(TestNG.java:1110)
>       at org.testng.TestNG.run(TestNG.java:1018)
>       at 
> com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:94)
>       at 
> com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:54)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
>       at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>       at 
> com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:127)
>       at java.base/java.lang.Thread.run(Thread.java:831)
> Caused by: java.io.IOException: HTTP/1.1 header parser received no bytes
>       at 
> java.net.http/jdk.internal.net.http.common.Utils.wrapWithExtraDetail(Utils.java:345)
>       at 
> java.net.http/jdk.internal.net.http.Http1Response$HeadersReader.onReadError(Http1Response.java:675)
>       at 
> java.net.http/jdk.internal.net.http.Http1AsyncReceiver.checkForErrors(Http1AsyncReceiver.java:302)
>       at 
> java.net.http/jdk.internal.net.http.Http1AsyncReceiver.flush(Http1AsyncReceiver.java:268)
>       at 
> java.net.http/jdk.internal.net.http.common.SequentialScheduler$SynchronizedRestartableTask.run(SequentialScheduler.java:175)
>       at 
> java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:147)
>       at 
> java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:198)
>       at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
>       at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
>       ... 1 more
> Caused by: java.io.IOException: An established connection was aborted by the 
> software in your host machine
>       at java.base/sun.nio.ch.SocketDispatcher.read0(Native Method)
>       at java.base/sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:46)
>       at java.base/sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:276)
>       at java.base/sun.nio.ch.IOUtil.read(IOUtil.java:245)
>       at java.base/sun.nio.ch.IOUtil.read(IOUtil.java:223)
>       at 
> java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:417)
>       at 
> java.net.http/jdk.internal.net.http.SocketTube.readAvailable(SocketTube.java:1162)
>       at 
> java.net.http/jdk.internal.net.http.SocketTube$InternalReadPublisher$InternalReadSubscription.read(SocketTube.java:825)
>       at 
> java.net.http/jdk.internal.net.http.SocketTube$SocketFlowTask.run(SocketTube.java:175)
>       at 
> java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:198)
>       at 
> java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:271)
>       at 
> java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:224)
>       at 
> java.net.http/jdk.internal.net.http.SocketTube$InternalReadPublisher$InternalReadSubscription.signalReadable(SocketTube.java:766)
>       at 
> java.net.http/jdk.internal.net.http.SocketTube$InternalReadPublisher$ReadEvent.signalEvent(SocketTube.java:949)
>       at 
> java.net.http/jdk.internal.net.http.SocketTube$SocketFlowEvent.handle(SocketTube.java:245)
>       at 
> java.net.http/jdk.internal.net.http.HttpClientImpl$SelectorManager.handleEvent(HttpClientImpl.java:976)
>       at 
> java.net.http/jdk.internal.net.http.HttpClientImpl$SelectorManager.lambda$run$3(HttpClientImpl.java:931)
>       at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
>       at 
> java.net.http/jdk.internal.net.http.HttpClientImpl$SelectorManager.run(HttpClientImpl.java:931)
> config StreamCloseTest.teardown(): success
> 
> Maybe you should consider using the servers provided by the 
> HttpServerAdapters interface provided in the test directory, as do many other 
> httpclient tests. Look for tests that implement HttpServerAdapters for an 
> example.

Thanks @dfuch to notice the error!
I changed to use `HttpServerAdapters` in StreamCloseTest.java. It works fine on 
my Linux x64.

Could you review again?

-------------

PR: https://git.openjdk.java.net/jdk/pull/1614

Reply via email to