diff options
Diffstat (limited to 'container-disc/src/main/java/com/yahoo')
-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() { |