Test with httpclient fails with others in class works on its own

476 views
Skip to first unread message

Jason Porter

unread,
Oct 1, 2019, 1:31:38 PM10/1/19
to vert.x
I have a project which uses an httpclient (the rxjava vertx variety). In my tests I have three test methods, two of which pass and the third does not when they're all run together, however, they all pass when run individually. I'm also using wiremock to mock out an http server for an integration test. The test that fails does so in under 100 ms. When it passes, it does so in about 2.5 seconds. Here's the error that terminates the test. Has anyone seen anything similar?

java.util.concurrent.RejectedExecutionException: event executor terminated

    at io
.netty.util.concurrent.SingleThreadEventExecutor.reject(SingleThreadEventExecutor.java:845)
    at io
.netty.util.concurrent.SingleThreadEventExecutor.offerTask(SingleThreadEventExecutor.java:328)
    at io
.netty.util.concurrent.SingleThreadEventExecutor.addTask(SingleThreadEventExecutor.java:321)
    at io
.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:756)
    at io
.vertx.core.http.impl.pool.Pool.checkProgress(Pool.java:229)
    at io
.vertx.core.http.impl.pool.Pool.getConnection(Pool.java:210)
    at io
.vertx.core.http.impl.ConnectionManager.getConnection(ConnectionManager.java:150)
    at io
.vertx.core.http.impl.HttpClientImpl.getConnectionForRequest(HttpClientImpl.java:1039)
    at io
.vertx.core.http.impl.HttpClientRequestImpl.connect(HttpClientRequestImpl.java:492)
    at io
.vertx.core.http.impl.HttpClientRequestImpl.write(HttpClientRequestImpl.java:700)
    at io
.vertx.core.http.impl.HttpClientRequestImpl.end(HttpClientRequestImpl.java:607)
    at io
.vertx.ext.web.client.impl.HttpContext.handleSendRequest(HttpContext.java:459)
    at io
.vertx.ext.web.client.impl.HttpContext.execute(HttpContext.java:266)
    at io
.vertx.ext.web.client.impl.HttpContext.next(HttpContext.java:250)
    at io
.vertx.ext.web.client.impl.predicate.PredicateInterceptor.handle(PredicateInterceptor.java:69)
    at io
.vertx.ext.web.client.impl.predicate.PredicateInterceptor.handle(PredicateInterceptor.java:32)
    at io
.vertx.ext.web.client.impl.HttpContext.next(HttpContext.java:247)
    at io
.vertx.ext.web.client.impl.HttpContext.fire(HttpContext.java:257)
    at io
.vertx.ext.web.client.impl.HttpContext.sendRequest(HttpContext.java:173)
    at io
.vertx.ext.web.client.impl.HttpContext.handlePrepareRequest(HttpContext.java:330)
    at io
.vertx.ext.web.client.impl.HttpContext.execute(HttpContext.java:263)
    at io
.vertx.ext.web.client.impl.HttpContext.next(HttpContext.java:250)
    at io
.vertx.ext.web.client.impl.predicate.PredicateInterceptor.handle(PredicateInterceptor.java:69)
    at io
.vertx.ext.web.client.impl.predicate.PredicateInterceptor.handle(PredicateInterceptor.java:32)
    at io
.vertx.ext.web.client.impl.HttpContext.next(HttpContext.java:247)
    at io
.vertx.ext.web.client.impl.HttpContext.fire(HttpContext.java:257)
    at io
.vertx.ext.web.client.impl.HttpContext.prepareRequest(HttpContext.java:160)
    at io
.vertx.ext.web.client.impl.HttpRequestImpl.send(HttpRequestImpl.java:273)
    at io
.vertx.ext.web.client.impl.HttpRequestImpl.send(HttpRequestImpl.java:243)
    at io
.vertx.reactivex.ext.web.client.HttpRequest.send(HttpRequest.java:593)
    at io
.vertx.reactivex.ext.web.client.HttpRequest.lambda$rxSend$11(HttpRequest.java:610)
    at io
.vertx.reactivex.impl.AsyncResultSingle.subscribeActual(AsyncResultSingle.java:48)
    at io
.reactivex.Single.subscribe(Single.java:3603)
    at io
.reactivex.internal.operators.single.SingleFlatMapMaybe.subscribeActual(SingleFlatMapMaybe.java:41)
    at io
.reactivex.Maybe.subscribe(Maybe.java:4290)
    at io
.reactivex.internal.operators.maybe.MaybeFilter.subscribeActual(MaybeFilter.java:39)
    at io
.reactivex.Maybe.subscribe(Maybe.java:4290)
    at io
.reactivex.internal.operators.maybe.MaybeFlatMapNotification.subscribeActual(MaybeFlatMapNotification.java:52)
    at io
.reactivex.Maybe.subscribe(Maybe.java:4290)
    at io
.reactivex.internal.operators.maybe.MaybeTimeoutMaybe.subscribeActual(MaybeTimeoutMaybe.java:50)
    at io
.reactivex.Maybe.subscribe(Maybe.java:4290)
    at io
.reactivex.internal.operators.maybe.MaybeDefer.subscribeActual(MaybeDefer.java:48)
    at io
.reactivex.Maybe.subscribe(Maybe.java:4290)
    at io
.reactivex.internal.operators.maybe.MaybeConcatIterable$ConcatMaybeObserver.drain(MaybeConcatIterable.java:179)
    at io
.reactivex.internal.operators.maybe.MaybeConcatIterable$ConcatMaybeObserver.request(MaybeConcatIterable.java:90)
    at io
.reactivex.internal.operators.flowable.FlowableDoOnLifecycle$SubscriptionLambdaSubscriber.request(FlowableDoOnLifecycle.java:106)
    at io
.reactivex.internal.subscribers.BasicFuseableSubscriber.request(BasicFuseableSubscriber.java:153)
    at io
.reactivex.internal.subscribers.BasicFuseableSubscriber.request(BasicFuseableSubscriber.java:153)
    at io
.reactivex.internal.operators.flowable.FlowableIgnoreElementsCompletable$IgnoreElementsSubscriber.onSubscribe(FlowableIgnoreElementsCompletable.java:56)
    at io
.reactivex.internal.subscribers.BasicFuseableSubscriber.onSubscribe(BasicFuseableSubscriber.java:67)
    at io
.reactivex.internal.subscribers.BasicFuseableSubscriber.onSubscribe(BasicFuseableSubscriber.java:67)
    at io
.reactivex.internal.operators.flowable.FlowableDoOnLifecycle$SubscriptionLambdaSubscriber.onSubscribe(FlowableDoOnLifecycle.java:73)
    at io
.reactivex.internal.operators.maybe.MaybeConcatIterable.subscribeActual(MaybeConcatIterable.java:56)
    at io
.reactivex.Flowable.subscribe(Flowable.java:14827)
    at io
.reactivex.internal.operators.flowable.FlowableDoOnLifecycle.subscribeActual(FlowableDoOnLifecycle.java:38)
    at io
.reactivex.Flowable.subscribe(Flowable.java:14827)
    at io
.reactivex.internal.operators.flowable.FlowableDoOnEach.subscribeActual(FlowableDoOnEach.java:50)
    at io
.reactivex.Flowable.subscribe(Flowable.java:14827)
    at io
.reactivex.internal.operators.flowable.FlowableDoOnEach.subscribeActual(FlowableDoOnEach.java:50)
    at io
.reactivex.Flowable.subscribe(Flowable.java:14827)
    at io
.reactivex.internal.operators.flowable.FlowableIgnoreElementsCompletable.subscribeActual(FlowableIgnoreElementsCompletable.java:34)
    at io
.reactivex.Completable.subscribe(Completable.java:2302)
    at io
.reactivex.internal.operators.maybe.MaybeFromCompletable.subscribeActual(MaybeFromCompletable.java:41)
    at io
.reactivex.Maybe.subscribe(Maybe.java:4290)
    at io
.reactivex.internal.operators.maybe.MaybeFilter.subscribeActual(MaybeFilter.java:39)
    at io
.reactivex.Maybe.subscribe(Maybe.java:4290)
    at io
.reactivex.internal.operators.maybe.MaybeFlatMapNotification.subscribeActual(MaybeFlatMapNotification.java:52)
    at io
.reactivex.Maybe.subscribe(Maybe.java:4290)
    at io
.reactivex.internal.operators.maybe.MaybeDefer.subscribeActual(MaybeDefer.java:48)
    at io
.reactivex.Maybe.subscribe(Maybe.java:4290)
    at io
.reactivex.internal.operators.maybe.MaybePeek.subscribeActual(MaybePeek.java:56)
    at io
.reactivex.Maybe.subscribe(Maybe.java:4290)
    at io
.reactivex.internal.operators.maybe.MaybeSwitchIfEmptySingle.subscribeActual(MaybeSwitchIfEmptySingle.java:45)
    at io
.reactivex.Single.subscribe(Single.java:3603)
    at io
.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
    at io
.reactivex.Single.subscribe(Single.java:3603)
    at io
.reactivex.internal.operators.single.SingleDoOnError.subscribeActual(SingleDoOnError.java:35)
    at io
.reactivex.Single.subscribe(Single.java:3603)
    at io
.reactivex.internal.operators.single.SingleDoOnDispose.subscribeActual(SingleDoOnDispose.java:38)
    at io
.reactivex.Single.subscribe(Single.java:3603)
    at io
.reactivex.internal.operators.single.SingleTimeout.subscribeActual(SingleTimeout.java:55)
    at io
.reactivex.Single.subscribe(Single.java:3603)
    at io
.reactivex.internal.operators.single.SingleDoOnError.subscribeActual(SingleDoOnError.java:35)
    at io
.reactivex.Single.subscribe(Single.java:3603)
    at io
.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
    at io
.reactivex.Single.subscribe(Single.java:3603)
    at io
.reactivex.internal.operators.single.SingleDoAfterTerminate.subscribeActual(SingleDoAfterTerminate.java:44)
    at io
.reactivex.Single.subscribe(Single.java:3603)
    at io
.reactivex.Single.test(Single.java:4072)
    at com
.redhat.vertx.pipeline.step.HttpClientIntegrationTest.happyPath204(HttpClientIntegrationTest.java:106)
    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:628)
    at org
.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
    at org
.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
    at org
.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
    at org
.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
    at org
.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
    at org
.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
    at org
.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
    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:125)
    at org
.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
    at org
.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
    at org
.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
    at org
.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
    at org
.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
    at java
.base/java.util.ArrayList.forEach(ArrayList.java:1540)
    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: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:125)
    at org
.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
    at org
.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
    at org
.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
    at org
.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
    at org
.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
    at java
.base/java.util.ArrayList.forEach(ArrayList.java:1540)
    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: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:125)
    at org
.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
    at org
.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
    at org
.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
    at org
.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
    at org
.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
    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.DefaultLauncher.execute(DefaultLauncher.java:229)
    at org
.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:197)
    at org
.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:211)
    at org
.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:191)
    at org
.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
    at com
.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69)
    at com
.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    at com
.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com
.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)





Julien Viet

unread,
Oct 2, 2019, 2:18:18 PM10/2/19
to ve...@googlegroups.com
Hi Jason,

it looks like the Vertx instance is closed according to the log so the corresponding Event Loop will not accept any task.

Julien

--
You received this message because you are subscribed to the Google Groups "vert.x" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vertx+un...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/vertx/ebe68b07-78e7-4d95-a61d-bd9d1e97bf04%40googlegroups.com.

Jason Porter

unread,
Oct 2, 2019, 2:19:57 PM10/2/19
to vert.x


On Wednesday, October 2, 2019 at 12:18:18 PM UTC-6, Julien Viet wrote:
Hi Jason,

it looks like the Vertx instance is closed according to the log so the corresponding Event Loop will not accept any task.

Julien

Thanks Julien. I figured it out after smashing the brick wall A LOT. Turns out we had a static WebClient that was trying to be reused between runs.
To unsubscribe from this group and stop receiving emails from it, send an email to ve...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages