diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2022-01-24 17:58:15 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2022-01-25 09:43:56 +0100 |
commit | 1cb62247d4b68a5f528cfbba36d8ae8bf954cb8e (patch) | |
tree | a817db3cafa72cf64e082c6d9be05506a5875a0d /container-disc | |
parent | 0b7a7117aafc8d4e0e723a15e3cbb4d3452fca13 (diff) |
Explicitly deactivate current container and wait for termination to complete
Diffstat (limited to 'container-disc')
-rw-r--r-- | container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java | 24 |
1 files changed, 17 insertions, 7 deletions
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() { |