diff options
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.java | 15 |
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") |