diff options
author | jonmv <venstad@gmail.com> | 2023-11-30 14:41:03 +0100 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2023-11-30 14:41:03 +0100 |
commit | 946bcd749dc6ab4469aca245508cec8251d6053a (patch) | |
tree | 649f30f01a539dd2f2a3c10fbfc2cf6a72bf9f8b /container-disc | |
parent | 3491100f5bee54d0918f3f9ba33d9b0b44026f55 (diff) |
Keep old container alive until servers are switched
Diffstat (limited to 'container-disc')
-rw-r--r-- | container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java | 15 |
1 files changed, 8 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 6edfcecdda9..6cc922682cb 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 @@ -304,14 +304,14 @@ public final class ConfiguredApplication implements Application { for (ServerProvider server : currentServers) { builder.serverProviders().install(server); } - activateContainer(builder, cleanupTask); - startAndStopServers(currentServers); - - startAndRemoveClients(Container.get().getClientProviderRegistry().allComponents()); - signalActivation(); + try (DeactivatedContainer deactivating = activateContainer(builder, cleanupTask)) { + startAndStopServers(currentServers); + startAndRemoveClients(Container.get().getClientProviderRegistry().allComponents()); + signalActivation(); + } } - private void activateContainer(ContainerBuilder builder, Runnable onPreviousContainerTermination) { + private DeactivatedContainer activateContainer(ContainerBuilder builder, Runnable onPreviousContainerTermination) { DeactivatedContainer deactivated = activator.activateContainer(builder); if (deactivated != null) { nonTerminatedContainerTracker.register(); @@ -323,6 +323,7 @@ public final class ConfiguredApplication implements Application { } }); } + return deactivated; } private void signalActivation() { @@ -466,7 +467,7 @@ public final class ConfiguredApplication implements Application { shutdownReconfigurer(); startAndStopServers(List.of()); startAndRemoveClients(List.of()); - activateContainer(null, () -> log.info("Last active container generation has terminated")); + try (DeactivatedContainer deactivated = activateContainer(null, () -> log.info("Last active container generation has terminated"))) { } subscriberFactory.close(); nonTerminatedContainerTracker.arriveAndAwaitAdvance(); } |