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.
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.
Most helpful comment
fixed by https://github.com/reactor/reactor-netty/commit/23fff56c570b4be806a0a4a30ced9fc000597e52 && https://github.com/reactor/reactor-netty/commit/e032fca6434cf65f250c5b780d4c8b505280985d