diff --git a/core/src/main/java/org/testcontainers/containers/ExecInContainerPattern.java b/core/src/main/java/org/testcontainers/containers/ExecInContainerPattern.java index 359065d732b..9cd68d48ffb 100644 --- a/core/src/main/java/org/testcontainers/containers/ExecInContainerPattern.java +++ b/core/src/main/java/org/testcontainers/containers/ExecInContainerPattern.java @@ -73,11 +73,12 @@ public Container.ExecResult execInContainer(InspectContainerResponse containerIn final ToStringConsumer stdoutConsumer = new ToStringConsumer(); final ToStringConsumer stderrConsumer = new ToStringConsumer(); - FrameConsumerResultCallback callback = new FrameConsumerResultCallback(); - callback.addConsumer(OutputFrame.OutputType.STDOUT, stdoutConsumer); - callback.addConsumer(OutputFrame.OutputType.STDERR, stderrConsumer); + try (FrameConsumerResultCallback callback = new FrameConsumerResultCallback()) { + callback.addConsumer(OutputFrame.OutputType.STDOUT, stdoutConsumer); + callback.addConsumer(OutputFrame.OutputType.STDERR, stderrConsumer); - dockerClient.execStartCmd(execCreateCmdResponse.getId()).exec(callback).awaitCompletion(); + dockerClient.execStartCmd(execCreateCmdResponse.getId()).exec(callback).awaitCompletion(); + } Integer exitCode = dockerClient.inspectExecCmd(execCreateCmdResponse.getId()).exec().getExitCode(); final Container.ExecResult result = new Container.ExecResult( diff --git a/core/src/main/java/org/testcontainers/utility/ResourceReaper.java b/core/src/main/java/org/testcontainers/utility/ResourceReaper.java index 4d44cbc3842..5d89ab886e7 100644 --- a/core/src/main/java/org/testcontainers/utility/ResourceReaper.java +++ b/core/src/main/java/org/testcontainers/utility/ResourceReaper.java @@ -93,7 +93,7 @@ public static String start(String hostIpAddress, DockerClient client) { StringBuilder ryukLog = new StringBuilder(); - client.logContainerCmd(ryukContainerId) + ResultCallback.Adapter logCallback = client.logContainerCmd(ryukContainerId) .withSince(0) .withFollowStream(true) .withStdOut(true) @@ -164,11 +164,17 @@ public void onNext(Frame frame) { ); kiraThread.setDaemon(true); kiraThread.start(); - - // We need to wait before we can start any containers to make sure that we delete them - if (!ryukScheduledLatch.await(TestcontainersConfiguration.getInstance().getRyukTimeout(), TimeUnit.SECONDS)) { - log.error("Timeout out waiting for Ryuk. Ryuk's log:\n{}", ryukLog); - throw new IllegalStateException(String.format("Can not connect to Ryuk at %s:%s", hostIpAddress, ryukPort)); + try { + // We need to wait before we can start any containers to make sure that we delete them + if (!ryukScheduledLatch.await(TestcontainersConfiguration.getInstance().getRyukTimeout(), TimeUnit.SECONDS)) { + log.error("Timed out waiting for Ryuk container to start. Ryuk's logs:\n{}", ryukLog); + throw new IllegalStateException(String.format("Could not connect to Ryuk at %s:%s", hostIpAddress, ryukPort)); + } + } finally { + try { + logCallback.close(); + } catch (IOException ignored) { + } } return ryukContainerId;