Skip to content
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

NettyHttpServerTest.testErrorBeforeRead #245

Closed
Scottmitch opened this issue Jan 11, 2019 · 5 comments · Fixed by #1848
Closed

NettyHttpServerTest.testErrorBeforeRead #245

Scottmitch opened this issue Jan 11, 2019 · 5 comments · Fixed by #1848
Labels
flaky tests Unit tests are flaky

Comments

@Scottmitch
Copy link
Member

reproduced locally on macOS during Gradle build.

org.junit.runners.model.TestTimedOutException: test timed out after 10000 milliseconds
	at sun.misc.Unsafe.park(Native Method)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at io.servicetalk.concurrent.api.PublisherAsBlockingIterable$SubscriberAndIterator.hasNext(PublisherAsBlockingIterable.java:162)
	at io.servicetalk.concurrent.api.PublisherAsBlockingIterable$SubscriberAndIterator.next(PublisherAsBlockingIterable.java:224)
	at io.servicetalk.http.netty.NettyHttpServerTest.testErrorBeforeRead(NettyHttpServerTest.java:452)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.mockito.internal.junit.JUnitRule$1.evaluateSafely(JUnitRule.java:52)
	at org.mockito.internal.junit.JUnitRule$1.evaluate(JUnitRule.java:43)
	at io.servicetalk.concurrent.api.MockedCompletableListenerRule$1.evaluate(MockedCompletableListenerRule.java:54)
	at io.servicetalk.concurrent.api.PublisherRule$1.evaluate(PublisherRule.java:71)
	at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
	at io.servicetalk.concurrent.internal.ServiceTalkTestTimeout$TimeoutStatement$CallableStatement.call(ServiceTalkTestTimeout.java:167)
	at io.servicetalk.concurrent.internal.ServiceTalkTestTimeout$TimeoutStatement$CallableStatement.call(ServiceTalkTestTimeout.java:159)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.lang.Thread.run(Thread.java:748)
@lewisd32 lewisd32 added the flaky tests Unit tests are flaky label Mar 18, 2019
@idelpivnitskiy
Copy link
Member

We haven't seen this problem for a long time. I will close the issue and we can reopen if necessary.

@idelpivnitskiy
Copy link
Member

doh, test doesn't fail anymore because it was disabled in https://github.pie.apple.com/servicetalk/servicetalk/pull/63

@idelpivnitskiy
Copy link
Member

https://github.com/apple/servicetalk/pull/1525/checks?check_run_id=2655868413

NettyHttpServerTest.testErrorBeforeRead(ExecutorSupplier, ExecutorSupplier) [3] client=CACHED server=IMMEDIATE

java.util.concurrent.ExecutionException: io.netty.channel.socket.ChannelOutputShutdownException: Channel output shutdown
	at io.servicetalk.concurrent.api.SourceToFuture.reportGet(SourceToFuture.java:121)
	at io.servicetalk.concurrent.api.SourceToFuture.get(SourceToFuture.java:92)
	at io.servicetalk.concurrent.api.BlockingTestUtils.awaitIndefinitely(BlockingTestUtils.java:136)
	at io.servicetalk.concurrent.api.BlockingTestUtils.awaitIndefinitelyNonNull(BlockingTestUtils.java:152)
	at io.servicetalk.http.netty.AbstractNettyHttpServerTest.makeRequest(AbstractNettyHttpServerTest.java:270)
	at io.servicetalk.http.netty.NettyHttpServerTest.testErrorBeforeRead(NettyHttpServerTest.java:557)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.engine.extension.TimeoutInvocation.proceed(TimeoutInvocation.java:46)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestTemplateMethod(TimeoutExtension.java:92)
	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor.execute(NodeTestTask.java:212)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor.execute(NodeTestTask.java:192)
	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:139)
	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.lambda$execute$2(TestTemplateTestDescriptor.java:107)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
	at java.base/java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:442)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
	at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:107)
	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:42)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
	at com.sun.proxy.$Proxy2.stop(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:133)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: io.netty.channel.socket.ChannelOutputShutdownException: Channel output shutdown
	at io.netty.channel.AbstractChannel$AbstractUnsafe.shutdownOutput(AbstractChannel.java:650)
	at io.netty.channel.AbstractChannel$AbstractUnsafe.handleWriteError(AbstractChannel.java:975)
	at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:955)
	at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.flush0(AbstractEpollChannel.java:557)
	at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:917)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372)
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750)
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742)
	at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728)
	at io.servicetalk.transport.netty.internal.ServiceTalkWireLogger.flush(ServiceTalkWireLogger.java:188)
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750)
	at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742)
	at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728)
	at io.netty.channel.DefaultChannelPipeline.flush(DefaultChannelPipeline.java:967)
	at io.netty.channel.AbstractChannel.flush(AbstractChannel.java:254)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:384)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	... 1 more
Caused by: io.netty.channel.unix.Errors$NativeIoException: writevAddresses(..) failed: Broken pipe

@Scottmitch
Copy link
Member Author

local gradle build, macOS, JDK 16.0.2+7

NettyHttpServerTest > testErrorBeforeRead(ExecutorSupplier, ExecutorSupplier) > io.servicetalk.http.netty.NettyHttpServerTest.testErrorBeforeRead(ExecutorSupplier, ExecutorSupplier)[1] FAILED
    java.util.concurrent.ExecutionException: io.netty.channel.socket.ChannelOutputShutdownException: Channel output shutdown
        at io.servicetalk.concurrent.api.SourceToFuture.reportGet(SourceToFuture.java:121)
        at io.servicetalk.concurrent.api.SourceToFuture.get(SourceToFuture.java:92)
        at io.servicetalk.concurrent.api.BlockingTestUtils.awaitIndefinitely(BlockingTestUtils.java:136)
        at io.servicetalk.concurrent.api.BlockingTestUtils.awaitIndefinitelyNonNull(BlockingTestUtils.java:152)
        at io.servicetalk.http.netty.AbstractNettyHttpServerTest.makeRequest(AbstractNettyHttpServerTest.java:271)
        at io.servicetalk.http.netty.NettyHttpServerTest.testErrorBeforeRead(NettyHttpServerTest.java:556)

        Caused by:
        io.netty.channel.socket.ChannelOutputShutdownException: Channel output shutdown
            at io.netty.channel.AbstractChannel$AbstractUnsafe.shutdownOutput(AbstractChannel.java:650)
            at io.netty.channel.AbstractChannel$AbstractUnsafe.handleWriteError(AbstractChannel.java:971)
            at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:951)
            at io.netty.channel.kqueue.AbstractKQueueChannel$AbstractKQueueUnsafe.flush0(AbstractKQueueChannel.java:506)
            at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:913)
            at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372)
            at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750)
            at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742)
            at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728)
            at io.servicetalk.transport.netty.internal.ServiceTalkWireLogger.flush(ServiceTalkWireLogger.java:188)
            at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750)
            at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742)
            at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728)
            at io.netty.channel.DefaultChannelPipeline.flush(DefaultChannelPipeline.java:967)
            at io.netty.channel.AbstractChannel.flush(AbstractChannel.java:254)
            at io.servicetalk.transport.netty.internal.Flush$FlushSubscriber.lambda$new$0(Flush.java:74)
            at io.servicetalk.transport.netty.internal.FlushOnEach$1.itemWritten(FlushOnEach.java:31)
            at io.servicetalk.transport.netty.internal.Flush$FlushSubscriber.onNext(Flush.java:117)
            at io.servicetalk.concurrent.api.ScanWithPublisher$ScanWithSubscriber.onNext(ScanWithPublisher.java:144)
            at io.servicetalk.concurrent.api.SingleConcatWithPublisher$AbstractConcatSubscriber.onNext(SingleConcatWithPublisher.java:92)
            at io.servicetalk.concurrent.api.ContextPreservingSubscriptionSubscriber.onNext(ContextPreservingSubscriptionSubscriber.java:39)
            at io.servicetalk.concurrent.api.MapPublisher$MapSubscriber.onNext(MapPublisher.java:60)
            at io.servicetalk.concurrent.api.ContextPreservingSubscriber.onNext(ContextPreservingSubscriber.java:72)
            at io.servicetalk.concurrent.api.FromArrayPublisher$FromArraySubscription.request(FromArrayPublisher.java:80)
            at io.servicetalk.concurrent.api.ContextPreservingSubscription.request(ContextPreservingSubscription.java:46)
            at io.servicetalk.concurrent.internal.DelayedSubscription.delayedSubscription(DelayedSubscription.java:58)
            at io.servicetalk.concurrent.api.DelayedCancellableThenSubscription.delayedSubscription(DelayedCancellableThenSubscription.java:73)
            at io.servicetalk.concurrent.api.SingleConcatWithPublisher$AbstractConcatSubscriber.onSubscribe(SingleConcatWithPublisher.java:87)
            at io.servicetalk.concurrent.api.ContextPreservingSubscriptionSubscriber.onSubscribe(ContextPreservingSubscriptionSubscriber.java:34)
            at io.servicetalk.concurrent.api.MapPublisher$MapSubscriber.onSubscribe(MapPublisher.java:53)
            at io.servicetalk.concurrent.api.ContextPreservingSubscriber.invokeOnSubscribe(ContextPreservingSubscriber.java:34)
            at io.servicetalk.concurrent.api.ContextPreservingSubscriber.onSubscribe(ContextPreservingSubscriber.java:45)
            at io.servicetalk.concurrent.api.FromArrayPublisher.doSubscribe(FromArrayPublisher.java:46)
            at io.servicetalk.concurrent.api.AbstractSynchronousPublisher.handleSubscribe(AbstractSynchronousPublisher.java:31)
            at io.servicetalk.concurrent.api.Publisher.delegateSubscribe(Publisher.java:3646)
            at io.servicetalk.concurrent.api.AbstractSynchronousPublisherOperator.handleSubscribe(AbstractSynchronousPublisherOperator.java:45)
            at io.servicetalk.concurrent.api.Publisher.lambda$subscribeWithContext$20(Publisher.java:3658)
            at io.servicetalk.concurrent.api.ContextPreservingRunnable.run(ContextPreservingRunnable.java:43)
            at io.servicetalk.concurrent.api.Publisher.subscribeWithContext(Publisher.java:3658)
            at io.servicetalk.concurrent.api.Publisher.subscribeInternal(Publisher.java:3366)
            at io.servicetalk.concurrent.api.SingleConcatWithPublisher$ConcatDeferNextSubscriber.emitSingleSuccessToTarget(SingleConcatWithPublisher.java:320)
            at io.servicetalk.concurrent.api.SingleConcatWithPublisher$ConcatDeferNextSubscriber.request(SingleConcatWithPublisher.java:308)
            at io.servicetalk.concurrent.api.ScanWithPublisher$ScanWithSubscriber$1.request(ScanWithPublisher.java:111)
            at io.servicetalk.transport.netty.internal.Flush$FlushSubscriber$1.request(Flush.java:91)
            at io.servicetalk.concurrent.api.ContextPreservingSubscription.request(ContextPreservingSubscription.java:46)
            at io.servicetalk.concurrent.internal.ConcurrentSubscription.request(ConcurrentSubscription.java:77)
            at io.servicetalk.transport.netty.internal.WriteStreamSubscriber.initialRequestN(WriteStreamSubscriber.java:245)
            at io.servicetalk.transport.netty.internal.WriteStreamSubscriber.lambda$onSubscribe$1(WriteStreamSubscriber.java:133)
            at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
            at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469)
            at io.netty.channel.kqueue.KQueueEventLoop.run(KQueueEventLoop.java:293)
            at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986)
            at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
            at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
            at java.base/java.lang.Thread.run(Thread.java:831)

            Caused by:
            io.netty.channel.unix.Errors$NativeIoException: writevAddresses(..) failed: Broken pipe

@Scottmitch Scottmitch changed the title NettyHttpServerTest.testErrorBeforeRead[client=CACHED server=IMMEDIATE] test failure NettyHttpServerTest.testErrorBeforeRead Aug 7, 2021
@Scottmitch
Copy link
Member Author

local gradle build, macOS, JDK 8.0.302+8

NettyHttpServerTest > testErrorBeforeRead(ExecutorSupplier, ExecutorSupplier) > io.servicetalk.http.netty.NettyHttpServerTest.testErrorBeforeRead(ExecutorSupplier, ExecutorSupplier)[1] FAILED
    java.util.concurrent.ExecutionException: io.netty.channel.socket.ChannelOutputShutdownException: Channel output shutdown
        at io.servicetalk.concurrent.api.SourceToFuture.reportGet(SourceToFuture.java:121)
        at io.servicetalk.concurrent.api.SourceToFuture.get(SourceToFuture.java:92)
        at io.servicetalk.concurrent.api.BlockingTestUtils.awaitIndefinitely(BlockingTestUtils.java:136)
        at io.servicetalk.concurrent.api.BlockingTestUtils.awaitIndefinitelyNonNull(BlockingTestUtils.java:152)
        at io.servicetalk.http.netty.AbstractNettyHttpServerTest.makeRequest(AbstractNettyHttpServerTest.java:294)
        at io.servicetalk.http.netty.NettyHttpServerTest.testErrorBeforeRead(NettyHttpServerTest.java:597)

        Caused by:
        io.netty.channel.socket.ChannelOutputShutdownException: Channel output shutdown
            at io.netty.channel.AbstractChannel$AbstractUnsafe.shutdownOutput(AbstractChannel.java:650)
            at io.netty.channel.AbstractChannel$AbstractUnsafe.handleWriteError(AbstractChannel.java:971)
            at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:951)
            at io.netty.channel.kqueue.AbstractKQueueChannel$AbstractKQueueUnsafe.flush0(AbstractKQueueChannel.java:505)
            at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:913)
            at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372)
            at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750)
            at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742)
            at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728)
            at io.servicetalk.transport.netty.internal.ServiceTalkWireLogger.flush(ServiceTalkWireLogger.java:188)
            at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750)
            at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742)
            at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728)
            at io.netty.channel.DefaultChannelPipeline.flush(DefaultChannelPipeline.java:967)
            at io.netty.channel.AbstractChannel.flush(AbstractChannel.java:254)
            at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
            at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469)
            at io.netty.channel.kqueue.KQueueEventLoop.run(KQueueEventLoop.java:293)
            at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986)
            at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
            at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
            at java.lang.Thread.run(Thread.java:748)

            Caused by:
            io.netty.channel.unix.Errors$NativeIoException: writevAddresses(..) failed: Broken pipe

Scottmitch added a commit to Scottmitch/servicetalk-1 that referenced this issue Sep 24, 2021
Motivation:
NettyHttpServerTest.testErrorBeforeRead has the server intentionally
write an error without first consuming the request content. The server
may close the connection before the client is done writting and if that
is the case a ClosedChannelException may be observed and fail the test.

Modifications:
- Allow ClosedChannelException when making a request

Result:
Fixes apple#245
Scottmitch added a commit that referenced this issue Sep 29, 2021
Motivation:
NettyHttpServerTest.testErrorBeforeRead has the server intentionally
write an error without first consuming the request content. The server
may close the connection before the client is done writting and if that
is the case a ClosedChannelException may be observed and fail the test.

Modifications:
- Allow ClosedChannelException when making a request

Result:
Fixes #245
Scottmitch added a commit that referenced this issue Sep 29, 2021
Motivation:
NettyHttpServerTest.testErrorBeforeRead has the server intentionally
write an error without first consuming the request content. The server
may close the connection before the client is done writting and if that
is the case a ClosedChannelException may be observed and fail the test.

Modifications:
- Allow ClosedChannelException when making a request

Result:
Fixes #245
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
flaky tests Unit tests are flaky
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants