From 146f51f09ff1c53d25b233035282286b733d0577 Mon Sep 17 00:00:00 2001 From: Marek Gradzki Date: Wed, 7 Mar 2018 15:25:17 +0100 Subject: ShutdownHandlerImpl: remove registered components after shutdown is performed Prevents invoking AutoCloseable.close(), which might not be idempotent. Change-Id: Id28200fb68a4c6e38878cf4f0b8aaee298dbc37b Signed-off-by: Marek Gradzki --- .../impl/src/main/java/io/fd/honeycomb/impl/ShutdownHandlerImpl.java | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'infra') diff --git a/infra/impl/src/main/java/io/fd/honeycomb/impl/ShutdownHandlerImpl.java b/infra/impl/src/main/java/io/fd/honeycomb/impl/ShutdownHandlerImpl.java index f622a603b..d7fd78a1e 100644 --- a/infra/impl/src/main/java/io/fd/honeycomb/impl/ShutdownHandlerImpl.java +++ b/infra/impl/src/main/java/io/fd/honeycomb/impl/ShutdownHandlerImpl.java @@ -20,9 +20,11 @@ import io.fd.honeycomb.data.init.ShutdownHandler; import java.util.Deque; import java.util.LinkedList; import javax.annotation.Nonnull; +import javax.annotation.concurrent.NotThreadSafe; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@NotThreadSafe public final class ShutdownHandlerImpl implements ShutdownHandler { private static final Logger LOG = LoggerFactory.getLogger(ShutdownHandlerImpl.class); @@ -70,5 +72,8 @@ public final class ShutdownHandlerImpl implements ShutdownHandler { LOG.warn("Unable to close component {}", closeable.getName(), e); } }); + // AutoCloseable.close() might not be idempotent, so remove registered components + // to prevent multiple invocations: + components.clear(); } } -- cgit 1.2.3-korg