From 1cb62247d4b68a5f528cfbba36d8ae8bf954cb8e Mon Sep 17 00:00:00 2001 From: Bjørn Christian Seime Date: Mon, 24 Jan 2022 17:58:15 +0100 Subject: Explicitly deactivate current container and wait for termination to complete --- .../container/jdisc/ConfiguredApplication.java | 24 +++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'container-disc') diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java b/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java index a1fa63e2599..6536bde6d16 100644 --- a/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java +++ b/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java @@ -55,6 +55,7 @@ import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.WeakHashMap; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; @@ -381,13 +382,22 @@ public final class ConfiguredApplication implements Application { } log.info("Stop: Shutting container down"); - configurer.shutdown(new Deconstructor(Deconstructor.Mode.SHUTDOWN)); - slobrokConfigSubscriber.ifPresent(SlobrokConfigSubscriber::shutdown); - Container.get().shutdown(); - - unregisterInSlobrok(); - LogSetup.cleanup(); - log.info("Stop: Finished"); + CountDownLatch latch = new CountDownLatch(1); + activator.activateContainer(null) + .notifyTermination(() -> { + configurer.shutdown(new Deconstructor(Deconstructor.Mode.SHUTDOWN)); + slobrokConfigSubscriber.ifPresent(SlobrokConfigSubscriber::shutdown); + Container.get().shutdown(); + unregisterInSlobrok(); + LogSetup.cleanup(); + log.info("Stop: Finished"); + latch.countDown(); + }); + try { + latch.await(); + } catch (InterruptedException e) { + throw new UncheckedInterruptedException("Failed to wait for container deactivation to complete", e, true); + } } private void shutdownReconfigurerThread() { -- cgit v1.2.3