diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-03-24 10:46:42 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-03-24 10:46:42 +0100 |
commit | 8079e630502119474f8cdd4b265f4188b8dd4f63 (patch) | |
tree | 1907d3bcba3f35e5e6e46bc66138a016c2a4626f | |
parent | e1e8e116f74c3b32faf5d901a07bbe14c67d1249 (diff) |
Use a common executor for all renderers.
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java | 12 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/searchchain/ExecutionFactory.java | 15 |
2 files changed, 24 insertions, 3 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java b/container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java index ecad9ced3be..2f5478d4bfe 100644 --- a/container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java +++ b/container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java @@ -26,7 +26,11 @@ public final class RendererRegistry extends ComponentRegistry<com.yahoo.processi public static final ComponentId jsonRendererId = ComponentId.fromString("JsonRenderer"); public static final ComponentId defaultRendererId = jsonRendererId; - /** Creates a registry containing the built-in renderers only */ + /** + * Creates a registry containing the built-in renderers only + * @deprecated Supply external executor + */ + @Deprecated(forRemoval = true, since = "7") public RendererRegistry() { this(Collections.emptyList()); } @@ -40,7 +44,11 @@ public final class RendererRegistry extends ComponentRegistry<com.yahoo.processi this(Collections.emptyList(), executor); } - /** Creates a registry of the given renderers plus the built-in ones */ + /** + * Creates a registry of the given renderers plus the built-in ones + * @deprecated Supply external executor + */ + @Deprecated(forRemoval = true, since = "7") public RendererRegistry(Collection<Renderer> renderers) { this(renderers, null); } diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/ExecutionFactory.java b/container-search/src/main/java/com/yahoo/search/searchchain/ExecutionFactory.java index 9bb1a794537..80064dcad3d 100644 --- a/container-search/src/main/java/com/yahoo/search/searchchain/ExecutionFactory.java +++ b/container-search/src/main/java/com/yahoo/search/searchchain/ExecutionFactory.java @@ -8,6 +8,7 @@ import com.yahoo.component.chain.ChainsConfigurer; import com.yahoo.component.chain.model.ChainsModel; import com.yahoo.component.chain.model.ChainsModelBuilder; import com.yahoo.component.provider.ComponentRegistry; +import com.yahoo.concurrent.ThreadFactoryFactory; import com.yahoo.container.QrSearchersConfig; import com.yahoo.container.core.ChainsConfig; import com.yahoo.container.handler.threadpool.ContainerThreadPool; @@ -24,6 +25,9 @@ import com.yahoo.vespa.configdefinition.SpecialtokensConfig; import java.util.concurrent.Executor; import java.util.concurrent.Executors; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; /** * Provides creation of fully configured query Execution instances. @@ -41,6 +45,15 @@ public class ExecutionFactory extends AbstractComponent { private final RendererRegistry rendererRegistry; private final Executor executor; + private static ThreadPoolExecutor createRenderingExecutor() { + int threadCount = Runtime.getRuntime().availableProcessors(); + ThreadPoolExecutor executor = new ThreadPoolExecutor(threadCount, threadCount, 1L, TimeUnit.SECONDS, + new LinkedBlockingQueue<>(), + ThreadFactoryFactory.getThreadFactory("common-rendering")); + executor.prestartAllCoreThreads(); + return executor; + } + @Inject public ExecutionFactory(ChainsConfig chainsConfig, IndexInfoConfig indexInfo, @@ -54,7 +67,7 @@ public class ExecutionFactory extends AbstractComponent { this.indexFacts = new IndexFacts(new IndexModel(indexInfo, clusters)).freeze(); this.specialTokens = new SpecialTokenRegistry(specialTokens); this.linguistics = linguistics; - this.rendererRegistry = new RendererRegistry(renderers.allComponents()); + this.rendererRegistry = new RendererRegistry(renderers.allComponents(), createRenderingExecutor()); this.executor = executor != null ? executor : Executors.newSingleThreadExecutor(); } |