From ec33bae94b892f745203b55317beff5bc490cdfc Mon Sep 17 00:00:00 2001 From: Sergei Egorov Date: Tue, 16 Jun 2020 12:36:54 +0200 Subject: [PATCH] auto close in `ResultCallback#awaitCompletion` --- .../api/async/ResultCallbackTemplate.java | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/async/ResultCallbackTemplate.java b/docker-java-api/src/main/java/com/github/dockerjava/api/async/ResultCallbackTemplate.java index 8c56ab093..911e67826 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/async/ResultCallbackTemplate.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/async/ResultCallbackTemplate.java @@ -87,10 +87,18 @@ public void close() throws IOException { */ @SuppressWarnings("unchecked") public RC_T awaitCompletion() throws InterruptedException { - completed.await(); - // eventually (re)throws RuntimeException - throwFirstError(); - return (RC_T) this; + try { + completed.await(); + // eventually (re)throws RuntimeException + throwFirstError(); + return (RC_T) this; + } finally { + try { + close(); + } catch (IOException e) { + LOGGER.debug("Failed to close", e); + } + } } /** @@ -99,9 +107,17 @@ public RC_T awaitCompletion() throws InterruptedException { * before {@link ResultCallback#onComplete()} was called. */ public boolean awaitCompletion(long timeout, TimeUnit timeUnit) throws InterruptedException { - boolean result = completed.await(timeout, timeUnit); - throwFirstError(); - return result; + try { + boolean result = completed.await(timeout, timeUnit); + throwFirstError(); + return result; + } finally { + try { + close(); + } catch (IOException e) { + LOGGER.debug("Failed to close", e); + } + } } /**