У нас есть проект 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
Некоторые из вещей, которые мы пробовали :
мы заменили порядок обращений к репозиториям - получили тот же результат: Тайм-аут при втором вызове (как будто второй ответ / запрос БД уходит в черную дыру)
Пытался обновить количество потоков в maven: clean install -T 1C
- Пробовал запускать интеграционные тесты через
maven
на машине с Windows и Linux - работает отлично и тесты проходят.