diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2022-01-24 17:04:44 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2022-01-25 09:43:56 +0100 |
commit | 0b7a7117aafc8d4e0e723a15e3cbb4d3452fca13 (patch) | |
tree | f93cd482f819d4bd8f172d858190877dd7684d58 /container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java | |
parent | 971037fe260c6bdbcb4f8f99780853dbf17c8ebc (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.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") |