Prevents invoking AutoCloseable.close(), which might not be idempotent.
Change-Id: Id28200fb68a4c6e38878cf4f0b8aaee298dbc37b
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
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);
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();
}
}