summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2022-01-21 10:02:43 +0100
committerGitHub <noreply@github.com>2022-01-21 10:02:43 +0100
commit765daae40c38c233c18722f11adbcbdb0ed0a1c9 (patch)
tree1266999b82ab93184fd6ea3f8585740f62594e1f
parent690d90ceb13797e1ff7876d4e9fc24efbec5f57b (diff)
parentf96bff8dcc27eec3c7b957157701321319a004dd (diff)
Merge pull request #20894 from vespa-engine/bjorncs/cleanup
Bjorncs/cleanup
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java10
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfileRegistry.java9
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());