diff options
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java | 19 | ||||
-rw-r--r-- | processing/src/main/java/com/yahoo/processing/execution/Execution.java | 2 |
2 files changed, 17 insertions, 4 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 dad106570ab..5e3b79c1545 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 @@ -25,6 +25,7 @@ import com.yahoo.prelude.query.QueryException; import com.yahoo.prelude.query.parser.ParseException; import com.yahoo.processing.rendering.Renderer; import com.yahoo.processing.request.CompoundName; +import com.yahoo.search.query.context.QueryContext; import com.yahoo.search.query.ranking.SoftTimeout; import com.yahoo.search.searchchain.ExecutionFactory; import com.yahoo.slime.Inspector; @@ -49,6 +50,7 @@ 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.trace.TraceNode; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -297,9 +299,7 @@ public class SearchHandler extends LoggingRequestHandler { Renderer renderer = toRendererCopy(query.getPresentation().getRenderer()); HttpSearchResponse response = new HttpSearchResponse(getHttpResponseStatus(request, result), result, query, renderer, - log.isLoggable(Level.FINE) - ? query.getContext(false).getTrace().traceNode() - : null); + extractTraceNode(query)); if (hostResponseHeaderKey.isPresent()) response.headers().add(hostResponseHeaderKey.get(), selfHostname); @@ -310,6 +310,19 @@ public class SearchHandler extends LoggingRequestHandler { return response; } + private static TraceNode extractTraceNode(Query query) { + if (log.isLoggable(Level.FINE)) { + QueryContext queryContext = query.getContext(false); + if (queryContext != null) { + Execution.Trace trace = queryContext.getTrace(); + if (trace != null) { + return trace.traceNode(); + } + } + } + return null; + } + private static int getErrors(Result result) { return result.hits().getErrorHit() == null ? 0 : 1; } diff --git a/processing/src/main/java/com/yahoo/processing/execution/Execution.java b/processing/src/main/java/com/yahoo/processing/execution/Execution.java index aeeae58543e..98bc3485084 100644 --- a/processing/src/main/java/com/yahoo/processing/execution/Execution.java +++ b/processing/src/main/java/com/yahoo/processing/execution/Execution.java @@ -244,7 +244,7 @@ public class Execution { /** * The node in the trace tree capturing this execution */ - private TraceNode traceNode; + private final TraceNode traceNode; /** * The highest level of tracing this should record |