diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-03-06 09:48:54 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-03-06 09:48:54 +0100 |
commit | 9dd4c4880b42dd17c3bbaf1662eee9d8bbcad748 (patch) | |
tree | f9e8639fd015093c033c189bc00c94a2bac2087b /container-core/src/main/java/com | |
parent | 351903b75e5cf8feaa6606c139ee56e1caeccd23 (diff) |
Shutdown renderer threads on deconstruct
Diffstat (limited to 'container-core/src/main/java/com')
3 files changed, 14 insertions, 3 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/ConfigHack.java b/container-core/src/main/java/com/yahoo/container/ConfigHack.java index 49965d0621d..b4900649cd2 100644 --- a/container-core/src/main/java/com/yahoo/container/ConfigHack.java +++ b/container-core/src/main/java/com/yahoo/container/ConfigHack.java @@ -14,6 +14,7 @@ import com.yahoo.container.config.StatisticsEmitter; * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> */ public final class ConfigHack { + private volatile StatisticsEmitter statisticsEmitter = new StatisticsEmitter(); public static final String TILED_TEMPLATE = "tiled"; @@ -26,4 +27,5 @@ public final class ConfigHack { public void setStatisticsEmitter(StatisticsEmitter statisticsEmitter) { this.statisticsEmitter = statisticsEmitter; } + } diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java index af478748eeb..6ec978d39a3 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java @@ -25,7 +25,7 @@ import java.util.concurrent.Executor; * A request handler base class extending the features of * ThreadedHttpRequestHandler with access logging. * - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> + * @author Steinar Knutsen */ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler { diff --git a/container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousSectionedRenderer.java b/container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousSectionedRenderer.java index 3980ec80423..b54757cac50 100644 --- a/container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousSectionedRenderer.java +++ b/container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousSectionedRenderer.java @@ -114,6 +114,8 @@ public abstract class AsynchronousSectionedRenderer<RESPONSE extends Response> e // We should complete any work we have already started so use an unbounded queue. // The executor SHOULD be reused across all instances having the same prototype private final Executor renderingExecutor; + // The executor may either be created (and thus owned) by this, or passed by injection + private final boolean renderingExecutorIsOwned; private static ThreadPoolExecutor createExecutor() { int threadCount = Runtime.getRuntime().availableProcessors(); @@ -150,7 +152,14 @@ public abstract class AsynchronousSectionedRenderer<RESPONSE extends Response> e */ public AsynchronousSectionedRenderer(Executor executor) { isInitialized = false; - renderingExecutor = executor==null ? createExecutor() : executor; + if (executor == null) { + renderingExecutor = createExecutor(); + renderingExecutorIsOwned = true; + } + else { + renderingExecutor = executor; + renderingExecutorIsOwned = false; + } } /** @@ -184,7 +193,7 @@ public abstract class AsynchronousSectionedRenderer<RESPONSE extends Response> e @Override public void deconstruct() { super.deconstruct(); - if (renderingExecutor instanceof ThreadPoolExecutor) + if (renderingExecutorIsOwned && renderingExecutor instanceof ThreadPoolExecutor) shutdown((ThreadPoolExecutor) renderingExecutor); } |