Skip to content

Commit e776a47

Browse files
committed
MB-32920 filter samples before applying the extractor
Change-Id: Ib2299ea7384e5f163b630af330457fd1ceabdad7 Reviewed-on: http://review.couchbase.org/105495 Reviewed-by: Poonam Dhavale <[email protected]> Tested-by: Artem Stemkovski <[email protected]> Well-Formed: Build Bot <[email protected]>
1 parent 907e2c5 commit e776a47

File tree

1 file changed

+25
-16
lines changed

1 file changed

+25
-16
lines changed

src/menelaus_stats.erl

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -366,9 +366,13 @@ are_samples_undefined(#gathered_stats{samples = Samples}) ->
366366
end, NodeSamples)
367367
end, Samples).
368368

369+
calculate_stats(Extractor, Samples) ->
370+
lists:map(Extractor, Samples).
371+
369372
calculate_stats(#gathered_stats{samples = Samples, nodes = Nodes,
370373
extractor = Extractor}) ->
371-
{[lists:map(Extractor, NodeSamples) || NodeSamples <- Samples], Nodes}.
374+
{[calculate_stats(Extractor, NodeSamples) || NodeSamples <- Samples],
375+
Nodes}.
372376

373377
%%
374378
%% Earlier we were gathering all stats from all nodes even if we are
@@ -2749,23 +2753,28 @@ do_get_indexes(Service, BucketId0, Nodes) ->
27492753
-record(params, {bucket, stat, start_ts, end_ts, step, nodes}).
27502754

27512755
filter_samples(Samples, StartTS, EndTS) ->
2752-
S1 = lists:dropwhile(fun ({T, _}) -> T < StartTS end, Samples),
2753-
lists:takewhile(fun ({T, _}) -> T < EndTS end, S1).
2754-
2755-
merge_samples(Samples, undefined, StartTS, EndTS) ->
2756-
[filter_samples(S, StartTS, EndTS) || S <- Samples];
2757-
merge_samples(Samples, AccSamples, StartTS, EndTS) ->
2758-
[do_merge_samples(S, A, StartTS, EndTS) ||
2756+
S1 = lists:dropwhile(fun (#stat_entry{timestamp = T}) -> T < StartTS end,
2757+
Samples),
2758+
lists:takewhile(fun (#stat_entry{timestamp = T}) -> T < EndTS end, S1).
2759+
2760+
prepare_samples(Samples, StartTS, EndTS, Extractor) ->
2761+
Filtered = filter_samples(Samples, StartTS, EndTS),
2762+
calculate_stats(Extractor, Filtered).
2763+
2764+
merge_samples(Samples, undefined, StartTS, EndTS, Extractor) ->
2765+
[prepare_samples(S, StartTS, EndTS, Extractor) || S <- Samples];
2766+
merge_samples(Samples, AccSamples, StartTS, EndTS, Extractor) ->
2767+
[do_merge_samples(S, A, StartTS, EndTS, Extractor) ||
27592768
{S, A} <- lists:zip(Samples, AccSamples)].
27602769

2761-
do_merge_samples(Samples, [], StartTS, EndTS) ->
2762-
filter_samples(Samples, StartTS, EndTS);
2763-
do_merge_samples(Samples, [{EndTS, _} | _] = AccSamples, StartTS, _) ->
2764-
filter_samples(Samples, StartTS, EndTS) ++ AccSamples.
2770+
do_merge_samples(Samples, [], StartTS, EndTS, Extractor) ->
2771+
prepare_samples(Samples, StartTS, EndTS, Extractor);
2772+
do_merge_samples(Samples, [{EndTS, _} | _] = AccSamples, StartTS, _, Extractor) ->
2773+
prepare_samples(Samples, StartTS, EndTS, Extractor) ++ AccSamples.
27652774

27662775
latest_start_timestamp(Samples, StartTS) ->
27672776
lists:foldl(
2768-
fun ([{T, _} | _], LatestT) when T > LatestT ->
2777+
fun ([#stat_entry{timestamp = T} | _], LatestT) when T > LatestT ->
27692778
T;
27702779
(_, LatestT) ->
27712780
LatestT
@@ -2802,9 +2811,9 @@ retrive_samples_from_archive(Archive, Params = #params{start_ts = StartTS,
28022811
%% no results for this stat in current archive
28032812
%% no need to proceed to less detailed archives
28042813
{AccSamples, AccNodes, Kind, false};
2805-
Stats = #gathered_stats{nodes = Nodes, kind = NewKind} ->
2814+
#gathered_stats{nodes = Nodes, kind = NewKind, extractor = Extractor,
2815+
samples = Samples} ->
28062816
true = AccNodes =:= undefined orelse Nodes =:= AccNodes,
2807-
{Samples, _} = calculate_stats(Stats),
28082817
NewContinue =
28092818
case latest_start_timestamp(Samples, StartTS) > StartTS of
28102819
true ->
@@ -2815,7 +2824,7 @@ retrive_samples_from_archive(Archive, Params = #params{start_ts = StartTS,
28152824
false
28162825
end,
28172826

2818-
{merge_samples(Samples, AccSamples, StartTS, EndTS),
2827+
{merge_samples(Samples, AccSamples, StartTS, EndTS, Extractor),
28192828
Nodes, NewKind, NewContinue}
28202829
end.
28212830

0 commit comments

Comments
 (0)