wankai123 commented on a change in pull request #6495:
URL: https://github.com/apache/skywalking/pull/6495#discussion_r594860418
##########
File path:
oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/Analyzer.java
##########
@@ -110,52 +116,56 @@ public void analyse(final ImmutableMap<String,
SampleFamily> sampleFamilies) {
return;
}
SampleFamily.RunningContext ctx = r.getData().context;
- Sample[] ss = r.getData().samples;
- generateTraffic(ctx.getMeterEntity());
- switch (metricType) {
- case single:
- AcceptableValue<Long> sv =
meterSystem.buildMetrics(metricName, Long.class);
- sv.accept(ctx.getMeterEntity(), getValue(ss[0]));
- send(sv, ss[0].getTimestamp());
- break;
- case labeled:
- AcceptableValue<DataTable> lv =
meterSystem.buildMetrics(metricName, DataTable.class);
- DataTable dt = new DataTable();
- for (Sample each : ss) {
- dt.put(composeGroup(each.getLabels()), getValue(each));
- }
- lv.accept(ctx.getMeterEntity(), dt);
- send(lv, ss[0].getTimestamp());
- break;
- case histogram:
- case histogramPercentile:
- Stream.of(ss).map(s -> Tuple.of(composeGroup(s.getLabels(), k
-> !Objects.equals("le", k)), s))
- .collect(groupingBy(Tuple2::_1, mapping(Tuple2::_2,
toList())))
- .forEach((group, subSs) -> {
- if (subSs.size() < 1) {
- return;
- }
- long[] bb = new long[subSs.size()];
- long[] vv = new long[bb.length];
- for (int i = 0; i < subSs.size(); i++) {
- Sample s = subSs.get(i);
- bb[i] = Long.parseLong(s.getLabels().get("le"));
- vv[i] = getValue(s);
- }
- BucketedValues bv = new BucketedValues(bb, vv);
- long time = subSs.get(0).getTimestamp();
- if (metricType == MetricType.histogram) {
- AcceptableValue<BucketedValues> v =
meterSystem.buildMetrics(metricName, BucketedValues.class);
- v.accept(ctx.getMeterEntity(), bv);
+ Map<MeterEntity, Sample[]> meterSamples = ctx.getMeterSamples();
+ meterSamples.forEach((meterEntity, ss) -> {
+ generateTraffic(meterEntity);
+ switch (metricType) {
+ case single:
+ AcceptableValue<Long> sv =
meterSystem.buildMetrics(metricName, Long.class);
+ sv.accept(meterEntity, getValue(ss[0]));
+ send(sv, ss[0].getTimestamp());
+ break;
+ case labeled:
+ AcceptableValue<DataTable> lv =
meterSystem.buildMetrics(metricName, DataTable.class);
+ DataTable dt = new DataTable();
+ for (Sample each : ss) {
+ dt.put(composeGroup(each.getLabels()), getValue(each));
+ }
+ lv.accept(meterEntity, dt);
+ send(lv, ss[0].getTimestamp());
+ break;
+ case histogram:
+ case histogramPercentile:
+ Stream.of(ss).map(s ->
Tuple.of(composeGroup(s.getLabels(), k -> !Objects.equals("le", k)), s))
+ .collect(groupingBy(Tuple2::_1, mapping(Tuple2::_2,
toList())))
+ .forEach((group, subSs) -> {
Review comment:
added and add UT
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]