new MetricsEmittingQueryRunner<>( emitter, queryToolChest, new MetricsEmittingQueryRunner<>( emitter, queryToolChest, QueryMetrics::reportSegmentAndCacheTime, queryMetrics -> queryMetrics.segment(sinkSegmentIdentifier) ).withWaitMeasuredFromNow(), queryToolChest, emitter,
public MetricsEmittingQueryRunner<T> withWaitMeasuredFromNow() { return new MetricsEmittingQueryRunner<>( emitter, queryToolChest, queryRunner, System.nanoTime(), reportMetric, applyCustomDimensions ); }
public MetricsEmittingQueryRunner<T> withWaitMeasuredFromNow() { return new MetricsEmittingQueryRunner<T>(emitter, builderFn, queryRunner, System.currentTimeMillis()); }
private <T> FinalizeResultsQueryRunner<T> makeRunner(final Query<T> query) { final QueryToolChest<T,Query<T>> toolChest = warehouse.getToolChest(query); return new FinalizeResultsQueryRunner<T>( toolChest.postMergeQueryDecoration( toolChest.mergeResults( new MetricsEmittingQueryRunner<T>( emitter, new Function<Query<T>, ServiceMetricEvent.Builder>() { @Override public ServiceMetricEvent.Builder apply(@Nullable Query<T> input) { return toolChest.makeMetricBuilder(query); } }, toolChest.preMergeQueryDecoration(baseClient) ).withWaitMeasuredFromNow() ) ), toolChest ); } }
@Override public Sequence<T> apply(Interval singleInterval) { return new AsyncQueryRunner<T>( //Note: it is assumed that toolChest.mergeResults(..) gives a query runner that is //not lazy i.e. it does most of its work on call to run() method toolChest.mergeResults( new MetricsEmittingQueryRunner<T>( emitter, toolChest, baseRunner, QueryMetrics::reportIntervalChunkTime, queryMetrics -> queryMetrics.chunkInterval(singleInterval) ).withWaitMeasuredFromNow() ), executor, queryWatcher ).run( queryPlus.withQuerySegmentSpec( new MultipleIntervalSegmentSpec(Collections.singletonList(singleInterval))), responseContext ); } }
CPUTimeMetricQueryRunner.safeBuild( new SpecificSegmentQueryRunner<T>( new MetricsEmittingQueryRunner<T>( emitter, toolChest, cache, toolChest, new MetricsEmittingQueryRunner<T>( emitter, toolChest, QueryMetrics::reportSegmentAndCacheTime, queryMetrics -> queryMetrics.segment(segmentId) ).withWaitMeasuredFromNow(), segmentSpec ),
new MetricsEmittingQueryRunner<T>( emitter, builderFn, ).withWaitMeasuredFromNow(), new SpecificSegmentSpec( new SegmentDescriptor(
new MetricsEmittingQueryRunner<T>( emitter, new Function<Query<T>, ServiceMetricEvent.Builder>() ).withWaitMeasuredFromNow(), segmentSpec );