testcontainers / testcontainers/testcontainers-java
DockerComposeContainer: random failures with SocatContainer or ContainerisedDockerCompose
Personne n'a encore pris cette issue.
- Langage dominant
- Java
- Étoiles
- 8.7k
- Forks
- 1.9k
- Merge moyen
- 2 j 17 h
- PR mergées (30 j)
- 9
Description
Versions
- testcontainers 1.7.3
- jdk1.8.0_172
- docker 18.03.1-ce-mac65
- docker-compose 1.21.1
Problems
SocatContainerrandomly fails to start. Usingalpine/socat:1.0.3with 5 minutes timeout forDockerComposeContainer#ambassadorContainerandwithLocalCompose(true):
Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed
at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:214)
at org.testcontainers.containers.DockerComposeContainer.startAmbassadorContainers(DockerComposeContainer.java:221)
at org.testcontainers.containers.DockerComposeContainer.starting(DockerComposeContainer.java:131)
at utils.TeamCityInDocker$Companion$instance$2.invoke(TeamCityInDocker.kt:59)
at utils.TeamCityInDocker$Companion$instance$2.invoke(TeamCityInDocker.kt:36)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at utils.TeamCityInDocker$Companion.getInstance(TeamCityInDocker.kt)
... 47 more
Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception
at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:83)
at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:207)
... 53 more
Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container
at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:279)
at org.testcontainers.containers.GenericContainer.lambda$start$0(GenericContainer.java:209)
at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:76)
... 54 more
Caused by: org.rnorth.ducttape.TimeoutException: Timeout waiting for result with exception
at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:51)
at org.rnorth.ducttape.unreliables.Unreliables.retryUntilTrue(Unreliables.java:95)
at org.testcontainers.containers.startupcheck.StartupCheckStrategy.waitUntilStartupSuccessful(StartupCheckStrategy.java:26)
at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:251)
... 56 more
Caused by: java.lang.RuntimeException: Not ready yet
at org.rnorth.ducttape.unreliables.Unreliables.lambda$retryUntilTrue$1(Unreliables.java:97)
at org.rnorth.ducttape.unreliables.Unreliables.lambda$retryUntilSuccess$0(Unreliables.java:41)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
... 1 more
ContainerisedDockerComposerandomly (but very frequently) fails to start. Usingdocker/compose:1.21.2andwithLocalCompose(false):
INFO 🐳 [docker/compose:1.21.2] - Pulling docker image: docker/compose:1.21.2. Please be patient; this may take some time but only needs to be done once.
INFO 🐳 [docker/compose:1.21.2] - Creating container for image: docker/compose:1.21.2
INFO 🐳 [docker/compose:1.21.2] - Starting container with ID: 0d2413d84cd32005eadfb9168a9181aa1f994d87ae633697a43e0b4e1e677901
INFO 🐳 [docker/compose:1.21.2] - Container docker/compose:1.21.2 is starting: 0d2413d84cd32005eadfb9168a9181aa1f994d87ae633697a43e0b4e1e677901
ERROR c.g.dockerjava.core.async.ResultCallbackTemplate - Error during callback
Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed
at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:214)
at org.testcontainers.containers.ContainerisedDockerCompose.invoke(DockerComposeContainer.java:529)
at org.testcontainers.containers.DockerComposeContainer.runWithCompose(DockerComposeContainer.java:189)
at org.testcontainers.containers.DockerComposeContainer.pullImages(DockerComposeContainer.java:137)
at org.testcontainers.containers.DockerComposeContainer.starting(DockerComposeContainer.java:127)
at utils.TeamCityInDocker$Companion$instance$2.invoke(TeamCityInDocker.kt:59)
at utils.TeamCityInDocker$Companion$instance$2.invoke(TeamCityInDocker.kt:36)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at utils.TeamCityInDocker$Companion.getInstance(TeamCityInDocker.kt)
... 22 more
Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception
at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:83)
at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:207)
... 30 more
Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container
at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:279)
at org.testcontainers.containers.GenericContainer.lambda$start$0(GenericContainer.java:209)
at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:76)
... 31 more
Caused by: com.github.dockerjava.api.exception.NotFoundException: {"message":"No such container: 0d2413d84cd32005eadfb9168a9181aa1f994d87ae633697a43e0b4e1e677901"}
at com.github.dockerjava.netty.handler.HttpResponseHandler.channelRead0(HttpResponseHandler.java:103)
at com.github.dockerjava.netty.handler.HttpResponseHandler.channelRead0(HttpResponseHandler.java:33)
at org.testcontainers.shaded.io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at org.testcontainers.shaded.io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:438)
at org.testcontainers.shaded.io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)
at org.testcontainers.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:284)
at org.testcontainers.shaded.io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:253)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at org.testcontainers.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1342)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at org.testcontainers.shaded.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:934)
at org.testcontainers.shaded.io.netty.channel.kqueue.AbstractKQueueStreamChannel$KQueueStreamUnsafe.readReady(AbstractKQueueStreamChannel.java:593)
at org.testcontainers.shaded.io.netty.channel.kqueue.KQueueDomainSocketChannel$KQueueDomainUnsafe.readReady(KQueueDomainSocketChannel.java:131)
at org.testcontainers.shaded.io.netty.channel.kqueue.AbstractKQueueChannel$AbstractKQueueUnsafe.readReady(AbstractKQueueChannel.java:367)
at org.testcontainers.shaded.io.netty.channel.kqueue.KQueueEventLoop.processReady(KQueueEventLoop.java:198)
at org.testcontainers.shaded.io.netty.channel.kqueue.KQueueEventLoop.run(KQueueEventLoop.java:270)
at org.testcontainers.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
at org.testcontainers.shaded.io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
at java.lang.Thread.run(Thread.java:748)
Exception gets thrown either in DockerComposeContainer#pullImages or in DockerComposeContainer#createServices. Debugging showed me that after executing CreateContainerCmd compose container just doesn't get created sometimes, docker container ps --all shows nothing.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par lire DockerComposeContainer#pullImages, DockerComposeContainer#createServices et ContainerisedDockerCompose, puis comparez ces chemins avec l’échec de démarrage de SocatContainer. Reproduisez le problème intermittent de création de conteneur en utilisant les versions et les configurations indiquées dans le rapport. Le travail est terminé lorsque les deux modes compose démarrent de manière fiable sans les échecs signalés de conteneur manquant ou de délai d’attente dépassé.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- docker, docker-compose, java
- Domaine
- devops, testing
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 35/100