execInContainer hangs if executed more than once on Docker Desktop Windows

Aberta
#3,221 5 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
30/100
Tipo de issue
Bug
Clareza
Precisa de esclarecimento
Status de atividade
Estagnada
Stack de tecnologia
docker, java
Domínio
testing

Direção de pesquisa

Reproduza o caso repetido de execInContainer no projeto epics2web vinculado usando seus testes do Gradle e, em seguida, inspecione ExecInContainerPattern e ContainerState em torno da chamada de awaitCompletion mostrada no stack trace. O trabalho estará concluído quando chamadas sucessivas a execInContainer forem concluídas em vez de travarem na segunda invocação no Docker Desktop Windows.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

stale

Running Docker Desktop Windows 2.1.0.5 and using JUnit 4 with annotations BeforeClass and AfterClass to setup a container that multiple Test cases can be run against. Each test case does an execInContainer. Each test works if run separately. If entire Test class is run then whatever the second execInContainer that is run will hang. Using docker command line tools I can exec a shell to the container created by testcontainers and see that the command specified in execInContainer is not running. If I attach a debugger I see that the execInContainer is parked waiting for a response. Stack trace:

park:-1, Unsafe (sun.misc)
park:175, LockSupport (java.util.concurrent.locks)
parkAndCheckInterrupt:836, AbstractQueuedSynchronizer (java.util.concurrent.locks)
doAcquireSharedInterruptibly:997, AbstractQueuedSynchronizer (java.util.concurrent.locks)
acquireSharedInterruptibly:1304, AbstractQueuedSynchronizer (java.util.concurrent.locks)
await:231, CountDownLatch (java.util.concurrent)
awaitCompletion:90, ResultCallbackTemplate (com.github.dockerjava.api.async)
execInContainer:80, ExecInContainerPattern (org.testcontainers.containers)
execInContainer:232, ContainerState (org.testcontainers.containers)
execInContainer:223, ContainerState (org.testcontainers.containers)
testCAStatus24:137, IntegrationErrorTest (org.jlab.epics2web)
invoke0:-1, NativeMethodAccessorImpl (sun.reflect)
invoke:62, NativeMethodAccessorImpl (sun.reflect)
invoke:43, DelegatingMethodAccessorImpl (sun.reflect)
invoke:498, Method (java.lang.reflect)
runReflectiveCall:59, FrameworkMethod$1 (org.junit.runners.model)
run:12, ReflectiveCallable (org.junit.internal.runners.model)
invokeExplosively:56, FrameworkMethod (org.junit.runners.model)
evaluate:17, InvokeMethod (org.junit.internal.runners.statements)
evaluate:306, ParentRunner$3 (org.junit.runners)
evaluate:100, BlockJUnit4ClassRunner$1 (org.junit.runners)
runLeaf:366, ParentRunner (org.junit.runners)
runChild:103, BlockJUnit4ClassRunner (org.junit.runners)
runChild:63, BlockJUnit4ClassRunner (org.junit.runners)
run:331, ParentRunner$4 (org.junit.runners)
schedule:79, ParentRunner$1 (org.junit.runners)
runChildren:329, ParentRunner (org.junit.runners)
access$100:66, ParentRunner (org.junit.runners)
evaluate:293, ParentRunner$2 (org.junit.runners)
evaluate:26, RunBefores (org.junit.internal.runners.statements)
evaluate:27, RunAfters (org.junit.internal.runners.statements)
evaluate:306, ParentRunner$3 (org.junit.runners)
run:413, ParentRunner (org.junit.runners)
run:137, JUnitCore (org.junit.runner)
startRunnerWithArgs:69, JUnit4IdeaTestRunner (com.intellij.junit4)
startRunnerWithArgs:33, IdeaTestRunner$Repeater (com.intellij.rt.junit)
prepareStreamsAndStart:220, JUnitStarter (com.intellij.rt.junit)
main:53, JUnitStarter (com.intellij.rt.junit)

Any tips to troubleshoot this? The project in question can be obtained from GitHub and uses Gradle to execute the tests: https://github.com/JeffersonLab/epics2web

Linguagem predominante
Java
Estrelas
8.7k
Forks
1.9k
Merge médio
2d 17h
PRs com merge (30d)
9

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de testcontainers/testcontainers-java

Todas as issues de testcontainers/testcontainers-java

Issues semelhantes

Mais issues de Java

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.