summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2018-06-22 08:43:21 +0200
committerArne Juul <arnej@yahoo-inc.com>2018-06-22 09:09:59 +0200
commit8422c23ba2a66f0c6582d41f10fa091b447cc170 (patch)
treebffbea062ed23f05e95999c67cd4c51b5cb93433 /container-search
parent18b49613b7f2a62281b3275563d8e0b8b284b201 (diff)
add ContainerLatencySearcher
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/model/federation/LocalProviderSpec.java3
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchers/ContainerLatencySearcher.java40
2 files changed, 42 insertions, 1 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/LocalProviderSpec.java b/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/LocalProviderSpec.java
index 5d244286c57..ef2bf65895f 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/LocalProviderSpec.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/LocalProviderSpec.java
@@ -42,7 +42,8 @@ public class LocalProviderSpec {
com.yahoo.prelude.searcher.ValidatePredicateSearcher.class,
com.yahoo.search.searchers.ValidateMatchPhaseSearcher.class,
com.yahoo.search.yql.FieldFiller.class,
- com.yahoo.search.searchers.InputCheckingSearcher.class);
+ com.yahoo.search.searchers.InputCheckingSearcher.class,
+ com.yahoo.search.searchers.ContainerLatencySearcher.class);
public final String clusterName;
diff --git a/container-search/src/main/java/com/yahoo/search/searchers/ContainerLatencySearcher.java b/container-search/src/main/java/com/yahoo/search/searchers/ContainerLatencySearcher.java
new file mode 100644
index 00000000000..8b415ded6c3
--- /dev/null
+++ b/container-search/src/main/java/com/yahoo/search/searchers/ContainerLatencySearcher.java
@@ -0,0 +1,40 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.search.searchers;
+
+import com.yahoo.component.chain.dependencies.After;
+import com.yahoo.metrics.simple.Gauge;
+import com.yahoo.metrics.simple.Point;
+import com.yahoo.metrics.simple.PointBuilder;
+import com.yahoo.metrics.simple.MetricReceiver;
+import com.yahoo.search.Query;
+import com.yahoo.search.Result;
+import com.yahoo.search.Searcher;
+import com.yahoo.search.searchchain.Execution;
+import com.yahoo.search.searchchain.PhaseNames;
+
+/**
+ * Measure latency in container before query is sent to backend
+ *
+ * @author Arne H Juul
+ */
+@After(PhaseNames.BACKEND)
+public class ContainerLatencySearcher extends Searcher {
+ private final Gauge latencyGauge;
+ private Point dims = null;
+
+ public ContainerLatencySearcher(MetricReceiver metrics) {
+ latencyGauge = metrics.declareGauge("query_container_latency");
+ }
+
+ @Override
+ public Result search(Query query, Execution execution) {
+ if (dims == null) {
+ PointBuilder p = latencyGauge.builder();
+ p.set("chain", execution.chain().getId().stringValue());
+ dims = p.build();
+ }
+ latencyGauge.sample(query.getDurationTime(), dims);
+ return execution.search(query);
+ }
+
+}