diff options
author | Jon Marius Venstad <jonmv@users.noreply.github.com> | 2020-12-08 01:22:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-08 01:22:19 +0100 |
commit | 96cf054bba808ff36e80cf939fadbc358b5ed7aa (patch) | |
tree | 3945720b9de8d56e84e49810c80356fa19771617 /container-di/src/main/java/com/yahoo/container/di/Container.java | |
parent | 82d1a71afff67b0004291be4091d8a00d0dfa79e (diff) | |
parent | ed28b553908170648a2a5467d478d7830057a5b8 (diff) |
Merge pull request #15731 from vespa-engine/revert-15724-revert-15723-revert-15715-jonmv/deconstruct-in-order
Revert "Revert "Revert "Always deconstruct in reverse creation order, including Provider objects"""
Diffstat (limited to 'container-di/src/main/java/com/yahoo/container/di/Container.java')
-rw-r--r-- | container-di/src/main/java/com/yahoo/container/di/Container.java | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/container-di/src/main/java/com/yahoo/container/di/Container.java b/container-di/src/main/java/com/yahoo/container/di/Container.java index 7fc2f2e55bc..af580767a17 100644 --- a/container-di/src/main/java/com/yahoo/container/di/Container.java +++ b/container-di/src/main/java/com/yahoo/container/di/Container.java @@ -21,7 +21,6 @@ import com.yahoo.container.di.config.SubscriberFactory; import com.yahoo.vespa.config.ConfigKey; import org.osgi.framework.Bundle; -import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -160,16 +159,10 @@ public class Container { private void deconstructObsoleteComponents(ComponentGraph oldGraph, ComponentGraph newGraph, Collection<Bundle> obsoleteBundles) { - Map<Object, ?> newComponents = new IdentityHashMap<>(newGraph.size()); - for (Object component : newGraph.allConstructedComponentsAndProviders()) - newComponents.put(component, null); - - List<Object> obsoleteComponents = new ArrayList<>(); - for (Object component : oldGraph.allConstructedComponentsAndProviders()) - if ( ! newComponents.containsKey(component)) - obsoleteComponents.add(component); - - componentDeconstructor.deconstruct(obsoleteComponents, obsoleteBundles); + IdentityHashMap<Object, Object> oldComponents = new IdentityHashMap<>(); + oldGraph.allConstructedComponentsAndProviders().forEach(c -> oldComponents.put(c, null)); + newGraph.allConstructedComponentsAndProviders().forEach(oldComponents::remove); + componentDeconstructor.deconstruct(oldComponents.keySet(), obsoleteBundles); } private Set<Bundle> installApplicationBundles(Map<ConfigKey<? extends ConfigInstance>, ConfigInstance> configsIncludingBootstrapConfigs) { |