Index: oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java (revision 70186d03f67423180511389a1f919b89b27f74a7) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java (revision ) @@ -29,6 +29,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; +import java.util.concurrent.TimeUnit; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.PropertyValue; @@ -53,6 +54,8 @@ import org.apache.jackrabbit.oak.spi.query.QueryIndex.AdvancedQueryIndex; import org.apache.jackrabbit.oak.spi.query.QueryIndex.IndexPlan; import org.apache.jackrabbit.oak.spi.state.NodeState; +import org.apache.jackrabbit.oak.stats.StatsOptions; +import org.apache.jackrabbit.oak.stats.TimerStats; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -150,6 +153,9 @@ * These constraints are collected during the prepare phase. */ private final List selectorConstraints = newArrayList(); + + private TimerStats queryDuration; + private String indexName; private Cursor cursor; private IndexRow currentRow; @@ -318,11 +324,19 @@ } IndexPlan p = plan.getIndexPlan(); if (p != null) { + indexName = p.getPlanName(); + queryDuration = query.getSettings().getStatisticsProvider().getTimer("QUERY_DURATION_" + indexName, StatsOptions.METRICS_ONLY); p.setFilter(createFilter(false)); AdvancedQueryIndex adv = (AdvancedQueryIndex) index; + TimerStats.Context context = queryDuration.time(); cursor = adv.query(p, rootState); + TimeUnit.NANOSECONDS.toMillis(context.stop()); } else { + indexName = index.getIndexName(); + queryDuration = query.getSettings().getStatisticsProvider().getTimer("QUERY_DURATION_" + indexName, StatsOptions.METRICS_ONLY); + TimerStats.Context context = queryDuration.time(); cursor = index.query(createFilter(false), rootState); + TimeUnit.NANOSECONDS.toMillis(context.stop()); } } Index: oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettings.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettings.java (revision 70186d03f67423180511389a1f919b89b27f74a7) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettings.java (revision ) @@ -152,7 +152,7 @@ return queryStats; } - StatisticsProvider getStatisticsProvider() { + public StatisticsProvider getStatisticsProvider() { return statisticsProvider; }