diff options
author | Jon Bratseth <bratseth@oath.com> | 2022-01-21 10:02:43 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-21 10:02:43 +0100 |
commit | 765daae40c38c233c18722f11adbcbdb0ed0a1c9 (patch) | |
tree | 1266999b82ab93184fd6ea3f8585740f62594e1f | |
parent | 690d90ceb13797e1ff7876d4e9fc24efbec5f57b (diff) | |
parent | f96bff8dcc27eec3c7b957157701321319a004dd (diff) |
Merge pull request #20894 from vespa-engine/bjorncs/cleanup
Bjorncs/cleanup
2 files changed, 14 insertions, 5 deletions
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 099df79cd9b..a36c40dd4d3 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 @@ -78,7 +78,7 @@ public final class ConfiguredApplication implements Application { private final OsgiFramework osgiFramework; private final com.yahoo.jdisc.Timer timerSingleton; private final AtomicBoolean dumpHeapOnShutdownTimeout = new AtomicBoolean(false); - private final AtomicDouble shudownTimeoutS = new AtomicDouble(50.0); + private final AtomicDouble shutdownTimeoutS = new AtomicDouble(50.0); // Subscriber that is used when this is not a standalone-container. Subscribes // to config to make sure that container will be registered in slobrok (by {@link com.yahoo.jrt.slobrok.api.Register}) // if slobrok config changes (typically slobroks moving to other nodes) @@ -145,7 +145,7 @@ public final class ConfiguredApplication implements Application { configurer = createConfigurer(builder.guiceModules().activate()); initializeAndActivateContainer(builder); startReconfigurerThread(); - portWatcher = new Thread(this::watchPortChange); + portWatcher = new Thread(this::watchPortChange, "configured-application-port-watcher"); portWatcher.setDaemon(true); portWatcher.start(); slobrokRegistrator = registerInSlobrok(qrConfig); // marks this as up @@ -245,7 +245,7 @@ public final class ConfiguredApplication implements Application { void reconfigure(QrConfig qrConfig) { dumpHeapOnShutdownTimeout.set(qrConfig.shutdown().dumpHeapOnTimeout()); - shudownTimeoutS.set(qrConfig.shutdown().timeout()); + shutdownTimeoutS.set(qrConfig.shutdown().timeout()); } private void initializeAndActivateContainer(ContainerBuilder builder) { @@ -291,7 +291,7 @@ public final class ConfiguredApplication implements Application { } } log.fine("Shutting down HandlersConfigurerDi"); - }); + }, "configured-application-reconfigurer"); reconfigurerThread.start(); } @@ -420,7 +420,7 @@ public final class ConfiguredApplication implements Application { private void startShutdownDeadlineExecutor() { shutdownDeadlineExecutor = new ScheduledThreadPoolExecutor(1, new DaemonThreadFactory("Shutdown deadline timer")); shutdownDeadlineExecutor.setExecuteExistingDelayedTasksAfterShutdownPolicy(false); - long delayMillis = (long)(shudownTimeoutS.get() * 1000.0); + long delayMillis = (long)(shutdownTimeoutS.get() * 1000.0); shutdownDeadlineExecutor.schedule(() -> { if (dumpHeapOnShutdownTimeout.get()) { String heapDumpName = Defaults.getDefaults().underVespaHome("var/crash/java_pid.") + santizeFileName(configId) + "." + ProcessHandle.current().pid() + ".hprof"; diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfileRegistry.java b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfileRegistry.java index fb1552e549b..8d2c847dc3a 100644 --- a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfileRegistry.java +++ b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfileRegistry.java @@ -10,6 +10,7 @@ import com.yahoo.search.query.profile.QueryProfileRegistry; import com.yahoo.search.query.profile.config.QueryProfileConfigurer; import com.yahoo.search.query.profile.config.QueryProfilesConfig; import com.yahoo.search.query.profile.types.QueryProfileTypeRegistry; +import com.yahoo.yolean.UncheckedInterruptedException; /** * A set of compiled query profiles. @@ -28,10 +29,18 @@ public class CompiledQueryProfileRegistry extends ComponentRegistry<CompiledQuer QueryProfileRegistry registry = QueryProfileConfigurer.createFromConfig(config); typeRegistry = registry.getTypeRegistry(); for (QueryProfile inputProfile : registry.allComponents()) { + abortIfInterrupted(); register(QueryProfileCompiler.compile(inputProfile, this)); } } + // Query profile construction is very expensive and triggers no operations that automatically throws on interrupt + // We need to manually check the interrupt flag in case the container reconfigurer should shut down + private void abortIfInterrupted() { + if (Thread.interrupted()) + throw new UncheckedInterruptedException("Interrupted while building query profile registry", true); + } + /** Creates a compiled query profile registry with no types */ public CompiledQueryProfileRegistry() { this(QueryProfileTypeRegistry.emptyFrozen()); |