aboutsummaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-04-23 16:31:28 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-04-23 16:52:09 +0200
commit7d012a85ad05785a4b316bbf77dbcfd657fdff87 (patch)
treee0f86fe1c9b068a2af926f887a7f6373f7c8e4b2 /container-search
parent75880a3716c3c34951811f0d8515cda4c6a2bf23 (diff)
Include queue time in search handler for query metrics in StatisticsSearcher
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/statistics/StatisticsSearcher.java29
1 files changed, 25 insertions, 4 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/statistics/StatisticsSearcher.java b/container-search/src/main/java/com/yahoo/prelude/statistics/StatisticsSearcher.java
index 941015b2fae..24b631f1773 100644
--- a/container-search/src/main/java/com/yahoo/prelude/statistics/StatisticsSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/statistics/StatisticsSearcher.java
@@ -5,9 +5,9 @@ import com.yahoo.component.chain.dependencies.Before;
import com.yahoo.concurrent.CopyOnWriteHashMap;
import com.yahoo.container.protect.Error;
import com.yahoo.jdisc.Metric;
-import java.util.logging.Level;
-import com.yahoo.metrics.simple.MetricSettings;
+import com.yahoo.jdisc.http.HttpRequest;
import com.yahoo.metrics.simple.MetricReceiver;
+import com.yahoo.metrics.simple.MetricSettings;
import com.yahoo.processing.request.CompoundName;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
@@ -29,7 +29,18 @@ import java.util.PriorityQueue;
import java.util.Queue;
import java.util.logging.Level;
-import static com.yahoo.container.protect.Error.*;
+import static com.yahoo.container.protect.Error.BACKEND_COMMUNICATION_ERROR;
+import static com.yahoo.container.protect.Error.EMPTY_DOCUMENTS;
+import static com.yahoo.container.protect.Error.ERROR_IN_PLUGIN;
+import static com.yahoo.container.protect.Error.ILLEGAL_QUERY;
+import static com.yahoo.container.protect.Error.INTERNAL_SERVER_ERROR;
+import static com.yahoo.container.protect.Error.INVALID_QUERY_PARAMETER;
+import static com.yahoo.container.protect.Error.INVALID_QUERY_TRANSFORMATION;
+import static com.yahoo.container.protect.Error.NO_BACKENDS_IN_SERVICE;
+import static com.yahoo.container.protect.Error.RESULT_HAS_ERRORS;
+import static com.yahoo.container.protect.Error.SERVER_IS_MISCONFIGURED;
+import static com.yahoo.container.protect.Error.TIMEOUT;
+import static com.yahoo.container.protect.Error.UNSPECIFIED;
/**
@@ -236,7 +247,7 @@ public class StatisticsSearcher extends Searcher {
incrQueryCount(metricContext);
logQuery(query);
- long start_ns = System.nanoTime(); // Start time, in nanoseconds.
+ long start_ns = getStartNanoTime(query);
qps(metricContext);
Result result;
//handle exceptions thrown below in searchers
@@ -428,5 +439,15 @@ public class StatisticsSearcher extends Searcher {
}
}
+ /**
+ * Returns the relative start time from request was received by jdisc
+ */
+ private static long getStartNanoTime(Query query) {
+ return Optional.ofNullable(query.getHttpRequest())
+ .flatMap(httpRequest -> Optional.ofNullable(httpRequest.getJDiscRequest()))
+ .map(HttpRequest::relativeCreatedAtNanoTime)
+ .orElseGet(System::nanoTime);
+ }
+
}