summaryrefslogtreecommitdiffstats
path: root/container-disc
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2023-11-30 14:41:03 +0100
committerjonmv <venstad@gmail.com>2023-11-30 14:41:03 +0100
commit946bcd749dc6ab4469aca245508cec8251d6053a (patch)
tree649f30f01a539dd2f2a3c10fbfc2cf6a72bf9f8b /container-disc
parent3491100f5bee54d0918f3f9ba33d9b0b44026f55 (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.java15
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();
}