aboutsummaryrefslogtreecommitdiffstats
path: root/container-disc/src/main/java/com/yahoo/container
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2022-01-24 17:58:15 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2022-01-25 09:43:56 +0100
commit1cb62247d4b68a5f528cfbba36d8ae8bf954cb8e (patch)
treea817db3cafa72cf64e082c6d9be05506a5875a0d /container-disc/src/main/java/com/yahoo/container
parent0b7a7117aafc8d4e0e723a15e3cbb4d3452fca13 (diff)
Explicitly deactivate current container and wait for termination to complete
Diffstat (limited to 'container-disc/src/main/java/com/yahoo/container')
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java24
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() {