aboutsummaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2017-03-06 09:48:54 +0100
committerJon Bratseth <bratseth@yahoo-inc.com>2017-03-06 09:48:54 +0100
commit9dd4c4880b42dd17c3bbaf1662eee9d8bbcad748 (patch)
treef9e8639fd015093c033c189bc00c94a2bac2087b /container-search
parent351903b75e5cf8feaa6606c139ee56e1caeccd23 (diff)
Shutdown renderer threads on deconstruct
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java9
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java21
2 files changed, 24 insertions, 6 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
index 733e0aa43d9..09b48242c1e 100644
--- a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
+++ b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
@@ -208,8 +208,13 @@ public class SearchHandler extends LoggingRequestHandler {
executor, accessLog, queryProfileConfig, searchers);
}
- private void setupSearchChainRegistry(final ComponentRegistry<Searcher> searchers,
- final ChainsConfig chainsConfig) {
+ @Override
+ protected void destroy() {
+ super.destroy();
+ rendererRegistry.deconstruct();
+ }
+
+ private void setupSearchChainRegistry(ComponentRegistry<Searcher> searchers, ChainsConfig chainsConfig) {
ChainsModel chainsModel = ChainsModelBuilder.buildFromConfig(chainsConfig);
ChainsConfigurer.prepareChainRegistry(searchChainRegistry, chainsModel, searchers);
searchChainRegistry.freeze();
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 c1b15ecbbc2..a05661abc2b 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,6 +26,9 @@ public final class RendererRegistry extends ComponentRegistry<com.yahoo.processi
public static final ComponentId xmlRendererId = ComponentId.fromString("DefaultRenderer");
public static final ComponentId jsonRendererId = ComponentId.fromString("JsonRenderer");
public static final ComponentId defaultRendererId = jsonRendererId;
+
+ private final ComponentId tiledRendererId;
+ private final ComponentId pageRendererId;
/** Creates a registry containing the built-in renderers only */
public RendererRegistry() {
@@ -65,19 +68,29 @@ public final class RendererRegistry extends ComponentRegistry<com.yahoo.processi
for (Renderer renderer : renderers)
register(renderer.getId(), renderer);
- // add legacy "templates" converted to renderers
- addTemplateSet(new TiledTemplateSet());
- addTemplateSet(new PageTemplateSet());
+ // add legacy "templates" converted to renderers // TODO: Remove on Vespa 7
+ tiledRendererId = addTemplateSet(new TiledTemplateSet());
+ pageRendererId = addTemplateSet(new PageTemplateSet());
freeze();
}
+
+ /** Must be called when use of this is discontinued to free the resources it has allocated */
+ public void deconstruct() {
+ // deconstruct the renderers which was created by this
+ getRenderer(jsonRendererId.toSpecification()).deconstruct();
+ getRenderer(xmlRendererId.toSpecification()).deconstruct();
+ getRenderer(tiledRendererId.toSpecification()).deconstruct();
+ getRenderer(pageRendererId.toSpecification()).deconstruct();
+ }
@SuppressWarnings({"deprecation", "unchecked"})
- private void addTemplateSet(UserTemplate<?> templateSet) {
+ private ComponentId addTemplateSet(UserTemplate<?> templateSet) {
Renderer renderer = new SearchRendererAdaptor(templateSet);
ComponentId rendererId = new ComponentId(templateSet.getName());
renderer.initId(rendererId);
register(rendererId, renderer);
+ return rendererId;
}
/**