diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2022-01-21 10:31:12 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2022-01-21 10:31:12 +0100 |
commit | 43dac43623cf3dc92d9e48ab9eb5f435cc04d2e6 (patch) | |
tree | d2f6828ab41a8277c1ea1037f1c2b5801cb9e4ef | |
parent | 99c8dd9531bc77281b9c6b7daa064cd4cf1d6aaa (diff) |
Fail-fast if reconfigurer thread is interrupted
-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); |