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-search | |
parent | 351903b75e5cf8feaa6606c139ee56e1caeccd23 (diff) |
Shutdown renderer threads on deconstruct
Diffstat (limited to 'container-search')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java | 9 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java | 21 |
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; } /** |