Skip to content

Commit 13fef7d

Browse files
committed
14066: incorporate review comments to fix metric endpoint sum up values
1 parent 1658bde commit 13fef7d

File tree

1 file changed

+13
-10
lines changed
  • spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics

1 file changed

+13
-10
lines changed

spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/MetricsEndpoint.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,9 @@ private String getName(Meter meter) {
8282
public MetricResponse metric(@Selector String requiredMetricName,
8383
@Nullable List<String> tag) {
8484
List<Tag> tags = parseTags(tag);
85-
List<Meter> meters = new ArrayList<>();
86-
if (!findFirstMatchingMeters(meters, this.registry, requiredMetricName, tags)) {
85+
List<Meter> meters = findFirstMatchingMeters(this.registry, requiredMetricName,
86+
tags);
87+
if (meters.isEmpty()) {
8788
return null;
8889
}
8990
Map<Statistic, Double> samples = getSamples(meters);
@@ -112,20 +113,22 @@ private Tag parseTag(String tag) {
112113
return Tag.of(parts[0], parts[1]);
113114
}
114115

115-
private boolean findFirstMatchingMeters(List<Meter> meters, MeterRegistry registry,
116-
String name, Iterable<Tag> tags) {
116+
private List<Meter> findFirstMatchingMeters(MeterRegistry registry, String name,
117+
Iterable<Tag> tags) {
117118
if (registry instanceof CompositeMeterRegistry) {
118119
return ((CompositeMeterRegistry) registry).getRegistries().stream()
119-
.anyMatch((r) -> findFirstMatchingMeters(meters, r, name, tags));
120+
.map((r) -> findFirstMatchingMeters(r, name, tags))
121+
.filter((match) -> !match.isEmpty()).findFirst()
122+
.orElse(Collections.emptyList());
123+
120124
}
121125
else {
122-
Collection<Meter> meterFound = registry.find(name).tags(tags).meters();
123-
if (meterFound != null && meterFound.size() > 0) {
124-
meters.addAll(meterFound);
125-
return true;
126+
Collection<Meter> metersFound = registry.find(name).tags(tags).meters();
127+
if (!metersFound.isEmpty()) {
128+
return new ArrayList<>(metersFound);
126129
}
127130
}
128-
return false;
131+
return Collections.emptyList();
129132
}
130133

131134
private Map<Statistic, Double> getSamples(List<Meter> meters) {

0 commit comments

Comments
 (0)