Reactor-netty: Itermittent timeout on blocking read errors

Created on 19 Jan 2018  路  3Comments  路  Source: reactor/reactor-netty

We're seeing tests regularly fail on Spring Boot CI due to timeout issues. Here's one example.

[ERROR] eventsWithDateAfter[Reactive](org.springframework.boot.actuate.audit.AuditEventsEndpointWebIntegrationTests)  Time elapsed: 360.013 s  <<< ERROR!
java.lang.IllegalStateException: Timeout on blocking read for 360000 MILLISECONDS
    at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:110)
    at reactor.core.publisher.Mono.block(Mono.java:1185)
    at org.springframework.test.web.reactive.server.DefaultWebTestClient$DefaultRequestBodyUriSpec.toResponseSpec(DefaultWebTestClient.java:293)
    at org.springframework.test.web.reactive.server.DefaultWebTestClient$DefaultRequestBodyUriSpec.exchange(DefaultWebTestClient.java:271)
    at org.springframework.boot.actuate.audit.AuditEventsEndpointWebIntegrationTests.eventsWithDateAfter(AuditEventsEndpointWebIntegrationTests.java:55)
    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.springframework.boot.actuate.endpoint.web.test.AbstractWebEndpointRunner$3.evaluate(AbstractWebEndpointRunner.java:114)
    at org.springframework.boot.actuate.endpoint.web.test.AbstractWebEndpointRunner$4.evaluate(AbstractWebEndpointRunner.java:129)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.springframework.boot.actuate.endpoint.web.test.AbstractWebEndpointRunner$1.evaluate(AbstractWebEndpointRunner.java:81)
    at org.springframework.boot.actuate.endpoint.web.test.AbstractWebEndpointRunner$2.evaluate(AbstractWebEndpointRunner.java:95)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runners.Suite.runChild(Suite.java:128)
    at org.junit.runners.Suite.runChild(Suite.java:27)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:369)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:275)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:239)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:160)
    at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:373)
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:334)
    at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:119)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:407)

[INFO] Running org.springframework.boot.actuate.audit.AuditEventsJmxEndpointExtensionTests

There's a lot of discussion on https://github.com/spring-projects/spring-boot/issues/10569 but I think this is probably a reactor-netty issue so should be reported here.

typbug

All 3 comments

The commit https://github.com/reactor/reactor-netty/commit/be41032653b7994cfa3a0a1d255fe4e503ebb4cf is tentative fix - @wilkinsona unfortunately didn't confirm it. We don't have a reproductible scenario yet, have you got a chance to run a few test builds ?

Boot's CI ran pretty happily over the weekend. In 20 builds we haven't seen a repeat of the timeout. I don't think we're quite ready to declare victory but it's looking hopeful.

Was this page helpful?
0 / 5 - 0 ratings