aboutsummaryrefslogtreecommitdiffstats
path: root/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2022-01-24 17:04:44 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2022-01-25 09:43:56 +0100
commit0b7a7117aafc8d4e0e723a15e3cbb4d3452fca13 (patch)
treef93cd482f819d4bd8f172d858190877dd7684d58 /container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java
parent971037fe260c6bdbcb4f8f99780853dbf17c8ebc (diff)
Delegate responsibility/timing of cleaning up old components to caller
Diffstat (limited to 'container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java')
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java15
1 files changed, 10 insertions, 5 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java b/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java
index be4bc556dde..7148ed6fb45 100644
--- a/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java
+++ b/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java
@@ -71,7 +71,8 @@ public class HandlersConfigurerDi {
this.vespaContainer = vespaContainer;
container = new Container(subscriberFactory, configId, deconstructor, osgiWrapper);
- waitForNextComponentGeneration(discInjector, true);
+ Runnable cleanupTask = waitForNextComponentGeneration(discInjector, true);
+ cleanupTask.run();
}
private static class ContainerAndDiOsgi extends OsgiImpl implements OsgiWrapper {
@@ -106,11 +107,15 @@ public class HandlersConfigurerDi {
/**
* Wait for new config to arrive and produce the new graph
+ * @return Task for deconstructing previous component graph and bundles
*/
- public void waitForNextComponentGeneration(Injector discInjector, boolean isInitializing) {
- currentGraph = container.waitForNextComponentGeneration(currentGraph,
- createFallbackInjector(vespaContainer, discInjector),
- isInitializing);
+ public Runnable waitForNextComponentGeneration(Injector discInjector, boolean isInitializing) {
+ Container.ComponentGraphResult result = container.waitForNextComponentGeneration(
+ this.currentGraph,
+ createFallbackInjector(vespaContainer, discInjector),
+ isInitializing);
+ this.currentGraph = result.newGraph();
+ return result.oldComponentsCleanupTask();
}
@SuppressWarnings("deprecation")