Register metrics explicitly Metric registration with a `Supplier` wasn't properly working. Bug: Issue 16259 Change-Id: I99449647f286645cf81ea489efb6e5f74eaad224
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitrepometrics/GitRepoMetricsCache.java b/src/main/java/com/googlesource/gerrit/plugins/gitrepometrics/GitRepoMetricsCache.java index 930ccb3..ad71e7f 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/gitrepometrics/GitRepoMetricsCache.java +++ b/src/main/java/com/googlesource/gerrit/plugins/gitrepometrics/GitRepoMetricsCache.java
@@ -19,11 +19,11 @@ import com.codahale.metrics.MetricRegistry; import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Supplier; import com.google.common.collect.ImmutableList; import com.google.common.collect.Maps; import com.google.common.flogger.FluentLogger; import com.google.gerrit.extensions.registration.DynamicSet; +import com.google.gerrit.metrics.CallbackMetric0; import com.google.gerrit.metrics.Description; import com.google.gerrit.metrics.MetricMaker; import com.google.inject.Inject; @@ -109,18 +109,13 @@ private void createNewCallbackMetric(GitRepoMetric metric, String projectName) { String metricName = getMetricName(metric.getName(), projectName); - Supplier<Long> supplier = - new Supplier<Long>() { - public Long get() { - return getMetrics().getOrDefault(metricName, 0L); - } - }; + CallbackMetric0<Long> cb = + metricMaker.newCallbackMetric( + metricName, + Long.class, + new Description(metric.getDescription()).setRate().setUnit(metric.getUnit())); - metricMaker.newCallbackMetric( - metricName, - Long.class, - new Description(metric.getDescription()).setRate().setUnit(metric.getUnit()), - supplier); + metricMaker.newTrigger(cb, () -> cb.set(getMetrics().getOrDefault(metricName, 0L))); } public List<GitRepoMetric> getMetricsNames() {