diff options
-rw-r--r-- | container-search/src/main/java/com/yahoo/prelude/statistics/StatisticsSearcher.java | 17 |
1 files changed, 11 insertions, 6 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 b4b23a0e94a..1867da0317b 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 @@ -84,6 +84,7 @@ public class StatisticsSearcher extends Searcher { private enum DegradedReason { match_phase, adaptive_timeout, timeout, non_ideal_state } private Metric metric; + private Map<String, Metric.Context> chainContexts = new CopyOnWriteHashMap<>(); private Map<String, Metric.Context> statePageOnlyContexts = new CopyOnWriteHashMap<>(); private Map<String, Map<DegradedReason, Metric.Context>> degradedReasonContexts = new CopyOnWriteHashMap<>(); private Map<String, Map<String, Metric.Context>> relevanceContexts = new CopyOnWriteHashMap<>(); @@ -152,11 +153,15 @@ public class StatisticsSearcher extends Searcher { peakQpsReporter.countQuery(); } - private Metric.Context getChainMetricContext(String chainName, String endpoint) { - Map<String, String> dimensions = new HashMap<>(); - dimensions.put("chain", chainName); - dimensions.put("endpoint", endpoint); - return this.metric.createContext(dimensions); + private Metric.Context getChainMetricContext(String chainName) { + Metric.Context context = chainContexts.get(chainName); + if (context == null) { + Map<String, String> dimensions = new HashMap<>(); + dimensions.put("chain", chainName); + context = this.metric.createContext(dimensions); + chainContexts.put(chainName, context); + } + return context; } private Metric.Context getDegradedMetricContext(String chainName, Coverage coverage) { @@ -223,7 +228,7 @@ public class StatisticsSearcher extends Searcher { return execution.search(query); } - Metric.Context metricContext = getChainMetricContext(execution.chain().getId().stringValue(), query.getHttpRequest().getHeader("Host")); + Metric.Context metricContext = getChainMetricContext(execution.chain().getId().stringValue()); incrQueryCount(metricContext); logQuery(query); |