Jenkins + TestContainers + Spring Boot + Couchbase-由于数据库超时而导致的Maven构建失败

时间:2019-05-27 08:48:51

标签: maven spring-boot jenkins spring-data testcontainers

我们有一个Spring Boot 2.0.4项目,该项目访问一个Couchbase数据库。

在我们的代码中,我们有2个连续的Spring Data查询:

dogsRepository.findBy(...);
catsRepository.findBy(...);

正常运行该程序时,一切正常,代码按预期运行。

错误: 我们有一个仅在集成测试阶段且仅在Jenkins服务器中发生的问题:

集成测试使用TestContainers来启动couchbase容器。

调用第二个findBy(...)时发生超时错误:

java.lang.RuntimeException: java.util.concurrent.TimeoutException
at com.couchbase.client.core.utils.Blocking.blockForSingle(Blocking.java:74)
at com.couchbase.client.java.CouchbaseCluster.disconnect(CouchbaseCluster.java:422)
at com.couchbase.client.java.CouchbaseCluster.disconnect(CouchbaseCluster.java:417)
at org.testcontainers.couchbase.CouchbaseContainer.stopCluster(CouchbaseContainer.java:188)
at org.testcontainers.couchbase.CouchbaseContainer.stop(CouchbaseContainer.java:183)
at org.testcontainers.containers.GenericContainer.finished(GenericContainer.java:760)
at org.testcontainers.containers.FailureDetectingExternalResource$1.evaluate(FailureDetectingExternalResource.java:36)
at org.testcontainers.containers.FailureDetectingExternalResource$1.evaluate(FailureDetectingExternalResource.java:30)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
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.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.util.concurrent.TimeoutException

我们尝试过的一些事情

  • 我们替换了对存储库的调用顺序-得到了相同的结果:第二个调用超时(好像第二个DB响应/请求陷入了黑洞)

  • 试图更新Maven中的线程数:clean install -T 1C

  • 试图通过maven在Windows机器和Linux机器上运行集成测试-完美运行并且测试通过。

0 个答案:

没有答案