diff options
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/di/Container.java | 7 | ||||
-rw-r--r-- | container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java | 3 |
2 files changed, 8 insertions, 2 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/di/Container.java b/container-core/src/main/java/com/yahoo/container/di/Container.java index e437f440c41..bb6b11c77ae 100644 --- a/container-core/src/main/java/com/yahoo/container/di/Container.java +++ b/container-core/src/main/java/com/yahoo/container/di/Container.java @@ -17,6 +17,7 @@ import com.yahoo.container.di.config.ApplicationBundlesConfig; import com.yahoo.container.di.config.PlatformBundlesConfig; import com.yahoo.container.di.config.SubscriberFactory; import com.yahoo.vespa.config.ConfigKey; +import com.yahoo.yolean.UncheckedInterruptedException; import org.osgi.framework.Bundle; import java.util.ArrayList; @@ -153,7 +154,11 @@ public class Container { } private void constructComponents(ComponentGraph graph) { - graph.nodes().forEach(Node::constructInstance); + graph.nodes().forEach(n -> { + if (Thread.interrupted()) + throw new UncheckedInterruptedException("Interrupted while constructing component graph", true); + n.constructInstance(); + }); } private void deconstructObsoleteComponents(ComponentGraph oldGraph, 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 a36c40dd4d3..04107b9d939 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 @@ -44,6 +44,7 @@ import com.yahoo.net.HostName; import com.yahoo.vespa.config.ConfigKey; import com.yahoo.vespa.defaults.Defaults; import com.yahoo.yolean.Exceptions; +import com.yahoo.yolean.UncheckedInterruptedException; import java.util.Collections; import java.util.HashSet; @@ -278,7 +279,7 @@ public final class ConfiguredApplication implements Application { // Block until new config arrives, and it should be applied configurer.getNewComponentGraph(builder.guiceModules().activate(), false); initializeAndActivateContainer(builder); - } catch (ConfigInterruptedException e) { + } catch (UncheckedInterruptedException | ConfigInterruptedException e) { break; } catch (Exception | LinkageError e) { // LinkageError: OSGi problems tryReportFailedComponentGraphConstructionMetric(configurer, e); |