diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-11-05 21:26:20 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-11-05 22:10:17 +0100 |
commit | 8b100501faa14a595425c43e9d653e1e89f7b160 (patch) | |
tree | dd0e336227cf5a6facfedd79b61ad7b402264f84 /container-search/src/main/java/com/yahoo/search/handler | |
parent | 87074495eb0859353389bb4846f54fd188e5337b (diff) |
GC old way of collection metrics and logging to file.
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/handler')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java | 106 |
1 files changed, 38 insertions, 68 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 a38dd5dc67a..52a3672e7a2 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 @@ -49,10 +49,7 @@ import com.yahoo.search.statistics.ElapsedTime; import com.yahoo.slime.Inspector; import com.yahoo.slime.ObjectTraverser; import com.yahoo.slime.SlimeUtils; -import com.yahoo.statistics.Callback; -import com.yahoo.statistics.Handle; import com.yahoo.statistics.Statistics; -import com.yahoo.statistics.Value; import com.yahoo.vespa.configdefinition.SpecialtokensConfig; import com.yahoo.yolean.Exceptions; import com.yahoo.yolean.trace.TraceNode; @@ -93,9 +90,6 @@ public class SearchHandler extends LoggingRequestHandler { static final String RENDERER_DIMENSION = "renderer"; private static final String JSON_CONTENT_TYPE = "application/json"; - - private final Value searchConnections; - public static final String defaultSearchChainName = "default"; private static final String fallbackSearchChain = "vespa"; @@ -105,30 +99,26 @@ public class SearchHandler extends LoggingRequestHandler { private final Optional<String> hostResponseHeaderKey; private final String selfHostname = HostName.getLocalhost(); - private final Embedder embedder; - private final ExecutionFactory executionFactory; - private final AtomicLong numRequestsLeftToTrace; private final static RequestHandlerSpec REQUEST_HANDLER_SPEC = RequestHandlerSpec.builder() .withAclMapping(SearchHandler.aclRequestMapper()).build(); - private final class MeanConnections implements Callback { - - @Override - public void run(Handle h, boolean firstTime) { - if (firstTime) { - metric.set(SEARCH_CONNECTIONS, 0.0d, null); - return; - } - Value v = (Value) h; - metric.set(SEARCH_CONNECTIONS, v.getMean(), null); - } + @Inject + public SearchHandler(Metric metric, + ContainerThreadPool threadpool, + CompiledQueryProfileRegistry queryProfileRegistry, + ContainerHttpConfig config, + Embedder embedder, + ExecutionFactory executionFactory) { + this(metric, threadpool.executor(), queryProfileRegistry, embedder, executionFactory, + config.numQueriesToTraceOnDebugAfterConstruction(), + config.hostResponseHeaderKey().equals("") ? Optional.empty() : Optional.of(config.hostResponseHeaderKey())); } - @Inject + @Deprecated public SearchHandler(Statistics statistics, Metric metric, ContainerThreadPool threadpool, @@ -136,7 +126,7 @@ public class SearchHandler extends LoggingRequestHandler { ContainerHttpConfig config, Embedder embedder, ExecutionFactory executionFactory) { - this(statistics, metric, threadpool.executor(), queryProfileRegistry, embedder, executionFactory, + this(metric, threadpool.executor(), queryProfileRegistry, embedder, executionFactory, config.numQueriesToTraceOnDebugAfterConstruction(), config.hostResponseHeaderKey().equals("") ? Optional.empty() : Optional.of(config.hostResponseHeaderKey())); } @@ -166,12 +156,7 @@ public class SearchHandler extends LoggingRequestHandler { CompiledQueryProfileRegistry queryProfileRegistry, ContainerHttpConfig containerHttpConfig, ExecutionFactory executionFactory) { - this(statistics, - metric, - executor, - queryProfileRegistry, - Embedder.throwsOnUse, - executionFactory, + this(metric, executor, queryProfileRegistry, Embedder.throwsOnUse, executionFactory, containerHttpConfig.numQueriesToTraceOnDebugAfterConstruction(), containerHttpConfig.hostResponseHeaderKey().equals("") ? Optional.empty() : Optional.of(containerHttpConfig.hostResponseHeaderKey())); @@ -188,12 +173,8 @@ public class SearchHandler extends LoggingRequestHandler { QueryProfilesConfig queryProfileConfig, ContainerHttpConfig containerHttpConfig, ExecutionFactory executionFactory) { - this(statistics, - metric, - executor, - QueryProfileConfigurer.createFromConfig(queryProfileConfig).compile(), - Embedder.throwsOnUse, - executionFactory, + this(metric, executor, QueryProfileConfigurer.createFromConfig(queryProfileConfig).compile(), + Embedder.throwsOnUse, executionFactory, containerHttpConfig.numQueriesToTraceOnDebugAfterConstruction(), containerHttpConfig.hostResponseHeaderKey().equals("") ? Optional.empty() : Optional.of( containerHttpConfig.hostResponseHeaderKey())); @@ -210,12 +191,11 @@ public class SearchHandler extends LoggingRequestHandler { CompiledQueryProfileRegistry queryProfileRegistry, ExecutionFactory executionFactory, Optional<String> hostResponseHeaderKey) { - this(statistics, metric, executor, queryProfileRegistry, Embedder.throwsOnUse, + this(metric, executor, queryProfileRegistry, Embedder.throwsOnUse, executionFactory, 0, hostResponseHeaderKey); } - private SearchHandler(Statistics statistics, - Metric metric, + private SearchHandler(Metric metric, Executor executor, CompiledQueryProfileRegistry queryProfileRegistry, Embedder embedder, @@ -230,14 +210,9 @@ public class SearchHandler extends LoggingRequestHandler { this.maxThreads = examineExecutor(executor); - searchConnections = new Value(SEARCH_CONNECTIONS, statistics, - new Value.Parameters().setLogRaw(true).setLogMax(true) - .setLogMean(true).setLogMin(true) - .setNameExtension(true) - .setCallback(new MeanConnections())); - this.hostResponseHeaderKey = hostResponseHeaderKey; this.numRequestsLeftToTrace = new AtomicLong(numQueriesToTraceOnDebugAfterStartup); + metric.set(SEARCH_CONNECTIONS, 0.0d, null); } /** @deprecated use the other constructor */ @@ -487,13 +462,8 @@ public class SearchHandler extends LoggingRequestHandler { query.trace("Invoking " + searchChain, false, 2); } - if (searchConnections != null) { - connectionStatistics(); - } else { - log.log(Level.WARNING, - "searchConnections is a null reference, probably a known race condition during startup.", - new IllegalStateException("searchConnections reference is null.")); - } + connectionStatistics(); + try { return searchAndFill(query, searchChain); } catch (ParseException e) { @@ -525,24 +495,24 @@ public class SearchHandler extends LoggingRequestHandler { } private void connectionStatistics() { + if (maxThreads <= 3) return; + int connections = requestsInFlight.intValue(); - searchConnections.put(connections); - if (maxThreads > 3) { - // cast to long to avoid overflows if maxThreads is at no - // log value (maxint) - long maxThreadsAsLong = maxThreads; - long connectionsAsLong = connections; - // only log when exactly crossing the limit to avoid - // spamming the log - if (connectionsAsLong < maxThreadsAsLong * 9L / 10L) { - // NOP - } else if (connectionsAsLong == maxThreadsAsLong * 9L / 10L) { - log.log(Level.WARNING, threadConsumptionMessage(connections, maxThreads, "90")); - } else if (connectionsAsLong == maxThreadsAsLong * 95L / 100L) { - log.log(Level.WARNING, threadConsumptionMessage(connections, maxThreads, "95")); - } else if (connectionsAsLong == maxThreadsAsLong) { - log.log(Level.WARNING, threadConsumptionMessage(connections, maxThreads, "100")); - } + metric.set(SEARCH_CONNECTIONS, connections, null); + // cast to long to avoid overflows if maxThreads is at no + // log value (maxint) + long maxThreadsAsLong = maxThreads; + long connectionsAsLong = connections; + // only log when exactly crossing the limit to avoid + // spamming the log + if (connectionsAsLong < maxThreadsAsLong * 9L / 10L) { + // NOP + } else if (connectionsAsLong == maxThreadsAsLong * 9L / 10L) { + log.log(Level.WARNING, threadConsumptionMessage(connections, maxThreads, "90")); + } else if (connectionsAsLong == maxThreadsAsLong * 95L / 100L) { + log.log(Level.WARNING, threadConsumptionMessage(connections, maxThreads, "95")); + } else if (connectionsAsLong == maxThreadsAsLong) { + log.log(Level.WARNING, threadConsumptionMessage(connections, maxThreads, "100")); } } @@ -598,7 +568,7 @@ public class SearchHandler extends LoggingRequestHandler { } private void traceVespaVersion(Query query) { - query.trace("Vespa version: " + Vtag.currentVersion.toString(), false, 4); + query.trace("Vespa version: " + Vtag.currentVersion, false, 4); } public SearchChainRegistry getSearchChainRegistry() { return executionFactory.searchChainRegistry(); |