diff --git a/.mvn/jvm.config b/.mvn/jvm.config new file mode 100644 index 000000000..32599cefe --- /dev/null +++ b/.mvn/jvm.config @@ -0,0 +1,10 @@ +--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED +--add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED +--add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED diff --git a/examples/example-exporter-multi-target/src/main/java/io/prometheus/metrics/examples/multitarget/SampleMultiCollector.java b/examples/example-exporter-multi-target/src/main/java/io/prometheus/metrics/examples/multitarget/SampleMultiCollector.java index f9cea3f87..dba3b1b9e 100644 --- a/examples/example-exporter-multi-target/src/main/java/io/prometheus/metrics/examples/multitarget/SampleMultiCollector.java +++ b/examples/example-exporter-multi-target/src/main/java/io/prometheus/metrics/examples/multitarget/SampleMultiCollector.java @@ -3,7 +3,6 @@ import io.prometheus.metrics.model.registry.MultiCollector; import io.prometheus.metrics.model.registry.PrometheusScrapeRequest; import io.prometheus.metrics.model.snapshots.CounterSnapshot; -import io.prometheus.metrics.model.snapshots.CounterSnapshot.CounterDataPointSnapshot.Builder; import io.prometheus.metrics.model.snapshots.GaugeSnapshot; import io.prometheus.metrics.model.snapshots.Labels; import io.prometheus.metrics.model.snapshots.MetricSnapshot; @@ -46,7 +45,8 @@ protected MetricSnapshots collectMetricSnapshots(PrometheusScrapeRequest scrapeR } else { targetName = targetNames[0]; } - Builder counterDataPointBuilder = CounterSnapshot.CounterDataPointSnapshot.builder(); + CounterSnapshot.CounterDataPointSnapshot.Builder counterDataPointBuilder = + CounterSnapshot.CounterDataPointSnapshot.builder(); io.prometheus.metrics.model.snapshots.GaugeSnapshot.GaugeDataPointSnapshot.Builder gaugeDataPointBuilder = GaugeSnapshot.GaugeDataPointSnapshot.builder(); Labels lbls = Labels.of("target", targetName); @@ -77,6 +77,7 @@ protected MetricSnapshots collectMetricSnapshots(PrometheusScrapeRequest scrapeR return new MetricSnapshots(snaps); } + @Override public List getPrometheusNames() { List names = new ArrayList(); names.add("x_calls_total"); diff --git a/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java b/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java index 6bce50718..3e0caf954 100644 --- a/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java +++ b/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java @@ -18,6 +18,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.zip.GZIPInputStream; @@ -67,7 +68,7 @@ public void testOpenMetricsTextFormat() throws IOException { assertThat(response.getHeader("Transfer-Encoding")).isNull(); assertThat(response.getHeader("Content-Length")) .isEqualTo(Integer.toString(response.body.length)); - String bodyString = new String(response.body); + String bodyString = new String(response.body, UTF_8); assertThat(bodyString) .contains("integration_test_info{test_name=\"" + sampleApp + "\"} 1") .contains("temperature_celsius{location=\"inside\"} 23.0") @@ -90,7 +91,7 @@ public void testPrometheusTextFormat() throws IOException { assertThat(response.getHeader("Transfer-Encoding")).isNull(); assertThat(response.getHeader("Content-Length")) .isEqualTo(Integer.toString(response.body.length)); - String bodyString = new String(response.body); + String bodyString = new String(response.body, UTF_8); assertThat(bodyString) .contains("integration_test_info{test_name=\"" + sampleApp + "\"} 1") .contains("temperature_celsius{location=\"inside\"} 23.0") @@ -370,6 +371,7 @@ private Response scrape(String method, String queryString, String... requestHead try { Thread.sleep(100); } catch (InterruptedException ignored) { + // ignore } } } @@ -392,14 +394,14 @@ private Response(int status, Map> headers, byte[] body) { for (Map.Entry> entry : headers.entrySet()) { if (entry.getKey() != null) { // HttpUrlConnection uses pseudo key "null" for the status line - this.headers.put(entry.getKey().toLowerCase(), entry.getValue().get(0)); + this.headers.put(entry.getKey().toLowerCase(Locale.ROOT), entry.getValue().get(0)); } } } private String getHeader(String name) { // HTTP headers are case-insensitive - return headers.get(name.toLowerCase()); + return headers.get(name.toLowerCase(Locale.ROOT)); } } } diff --git a/integration-tests/it-pushgateway/src/main/java/io/prometheus/metrics/it/pushgateway/PushGatewayTestApp.java b/integration-tests/it-pushgateway/src/main/java/io/prometheus/metrics/it/pushgateway/PushGatewayTestApp.java index 61032600b..5c8605617 100644 --- a/integration-tests/it-pushgateway/src/main/java/io/prometheus/metrics/it/pushgateway/PushGatewayTestApp.java +++ b/integration-tests/it-pushgateway/src/main/java/io/prometheus/metrics/it/pushgateway/PushGatewayTestApp.java @@ -79,6 +79,7 @@ private static void runSslTest() throws IOException { static TrustManager insecureTrustManager = new X509TrustManager() { + @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } diff --git a/pom.xml b/pom.xml index 6ae53a26b..3105a1b22 100644 --- a/pom.xml +++ b/pom.xml @@ -277,7 +277,28 @@ -Xlint:all -Werror + -XDcompilePolicy=simple + + -Xplugin:ErrorProne + -Xep:AlmostJavadoc:OFF + -Xep:MissingSummary:OFF + -Xep:LongDoubleConversion:OFF + -Xep:StringSplitter:OFF + -XepExcludedPaths:.*/generated/.* + + + + com.google.errorprone + error_prone_core + 2.33.0 + + + diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterFilterProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterFilterProperties.java index 4758a48fe..7a408bb58 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterFilterProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterFilterProperties.java @@ -24,15 +24,6 @@ private ExporterFilterProperties( List excludedNames, List allowedPrefixes, List excludedPrefixes) { - this(allowedNames, excludedNames, allowedPrefixes, excludedPrefixes, ""); - } - - private ExporterFilterProperties( - List allowedNames, - List excludedNames, - List allowedPrefixes, - List excludedPrefixes, - String prefix) { this.allowedNames = allowedNames == null ? null : Collections.unmodifiableList(new ArrayList<>(allowedNames)); this.excludedNames = @@ -45,7 +36,6 @@ private ExporterFilterProperties( excludedPrefixes == null ? null : Collections.unmodifiableList(new ArrayList<>(excludedPrefixes)); - validate(prefix); } public List getAllowedMetricNames() { @@ -64,8 +54,6 @@ public List getExcludedMetricNamePrefixes() { return excludedPrefixes; } - private void validate(String prefix) throws PrometheusPropertiesException {} - /** * Note that this will remove entries from {@code properties}. This is because we want to know if * there are unused properties remaining after all properties have been loaded. @@ -81,7 +69,7 @@ static ExporterFilterProperties load(String prefix, Map properti List excludedPrefixes = Util.loadStringList(prefix + "." + METRIC_NAME_MUST_NOT_START_WITH, properties); return new ExporterFilterProperties( - allowedNames, excludedNames, allowedPrefixes, excludedPrefixes, prefix); + allowedNames, excludedNames, allowedPrefixes, excludedPrefixes); } public static Builder builder() { diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java index 9d1fde4ab..e29f93036 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java @@ -113,6 +113,7 @@ private static Properties loadPropertiesFromClasspath() { .getResourceAsStream("prometheus.properties")) { properties.load(stream); } catch (Exception ignored) { + // No properties file found on the classpath. } return properties; } diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/Util.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/Util.java index 66d6b2d92..8adcd0af7 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/Util.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/Util.java @@ -91,7 +91,7 @@ static Map loadMap(String name, Map properties) if (keyValue.length == 2) { String key = keyValue[0].trim(); String value = keyValue[1].trim(); - if (key.length() > 0 && value.length() > 0) { + if (!key.isEmpty() && !value.isEmpty()) { result.putIfAbsent(key, value); } } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/DistributionDataPoint.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/DistributionDataPoint.java index 57e7a3e86..82e42a892 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/DistributionDataPoint.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/DistributionDataPoint.java @@ -25,7 +25,7 @@ public interface DistributionDataPoint extends DataPoint, TimerApi { /** Observe {@code value}, and create a custom exemplar with the given labels. */ void observeWithExemplar(double value, Labels labels); - /** {@inheritDoc} */ + @Override default Timer startTimer() { return new Timer(this::observe); } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/GaugeDataPoint.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/GaugeDataPoint.java index 003e3e5e8..eec0304c7 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/GaugeDataPoint.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/GaugeDataPoint.java @@ -56,7 +56,7 @@ default void decWithExemplar(double amount, Labels labels) { /** Set the gauge to {@code value}, and create a custom exemplar with the given labels. */ void setWithExemplar(double value, Labels labels); - /** {@inheritDoc} */ + @Override default Timer startTimer() { return new Timer(this::set); } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/exemplars/ExemplarSampler.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/exemplars/ExemplarSampler.java index 0d4a71f63..0e1c49f8c 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/exemplars/ExemplarSampler.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/exemplars/ExemplarSampler.java @@ -98,7 +98,7 @@ public void observe(double value) { return; // This is the hot path in a high-throughput application and should be as efficient as // possible. } - rateLimitedObserve(acceptingNewExemplars, value, exemplars, () -> doObserve(value)); + rateLimitedObserve(acceptingNewExemplars, value, () -> doObserve(value)); } public void observeWithExemplar(double value, Labels labels) { @@ -107,10 +107,7 @@ public void observeWithExemplar(double value, Labels labels) { // possible. } rateLimitedObserve( - acceptingNewCustomExemplars, - value, - customExemplars, - () -> doObserveWithExemplar(value, labels)); + acceptingNewCustomExemplars, value, () -> doObserveWithExemplar(value, labels)); } private long doObserve(double value) { @@ -278,8 +275,8 @@ private long doObserveWithExemplarWithoutUpperBounds(double amount, Labels label *

To avoid performance issues, we rate limit observing exemplars to {@link * ExemplarSamplerConfig#getSampleIntervalMillis()} milliseconds. */ - private void rateLimitedObserve( - AtomicBoolean accepting, double value, Exemplar[] exemplars, LongSupplier observeFunc) { + @SuppressWarnings("FutureReturnValueIgnored") + private void rateLimitedObserve(AtomicBoolean accepting, double value, LongSupplier observeFunc) { if (Double.isNaN(value)) { return; } @@ -352,6 +349,7 @@ private Labels doSampleExemplar() { } } } catch (NoClassDefFoundError ignored) { + // ignore } return Labels.EMPTY; } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Buffer.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Buffer.java index 720c8228c..69f6de86f 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Buffer.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Buffer.java @@ -48,6 +48,7 @@ void reset() { reset = true; } + @SuppressWarnings("ThreadPriorityCheck") T run( Function complete, Supplier runnable, Consumer observeFunction) { double[] buffer; diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/CKMSQuantiles.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/CKMSQuantiles.java index adfd5c6d8..9fc1e9634 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/CKMSQuantiles.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/CKMSQuantiles.java @@ -38,6 +38,7 @@ final class CKMSQuantiles { int n = 0; /** List of sampled observations, ordered by Sample.value. */ + @SuppressWarnings("JdkObsolete") final LinkedList samples = new LinkedList<>(); /** diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Counter.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Counter.java index 5e435f695..2e84b6ade 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Counter.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Counter.java @@ -47,41 +47,36 @@ private Counter(Builder builder, PrometheusProperties prometheusProperties) { } } - /** {@inheritDoc} */ @Override public void inc(long amount) { getNoLabels().inc(amount); } - /** {@inheritDoc} */ @Override public void inc(double amount) { getNoLabels().inc(amount); } - /** {@inheritDoc} */ @Override public void incWithExemplar(long amount, Labels labels) { getNoLabels().incWithExemplar(amount, labels); } - /** {@inheritDoc} */ @Override public void incWithExemplar(double amount, Labels labels) { getNoLabels().incWithExemplar(amount, labels); } - /** {@inheritDoc} */ + @Override public double get() { return getNoLabels().get(); } - /** {@inheritDoc} */ + @Override public long getLongValue() { return getNoLabels().getLongValue(); } - /** {@inheritDoc} */ @Override public CounterSnapshot collect() { return (CounterSnapshot) super.collect(); @@ -131,26 +126,24 @@ private DataPoint(ExemplarSampler exemplarSampler) { this.exemplarSampler = exemplarSampler; } - /** {@inheritDoc} */ + @Override public double get() { return longValue.sum() + doubleValue.sum(); } - /** {@inheritDoc} */ + @Override public long getLongValue() { return longValue.sum() + (long) doubleValue.sum(); } - /** {@inheritDoc} */ @Override public void inc(long amount) { validateAndAdd(amount); if (isExemplarsEnabled()) { - exemplarSampler.observe(amount); + exemplarSampler.observe((double) amount); } } - /** {@inheritDoc} */ @Override public void inc(double amount) { validateAndAdd(amount); @@ -159,16 +152,14 @@ public void inc(double amount) { } } - /** {@inheritDoc} */ @Override public void incWithExemplar(long amount, Labels labels) { validateAndAdd(amount); if (isExemplarsEnabled()) { - exemplarSampler.observeWithExemplar(amount, labels); + exemplarSampler.observeWithExemplar((double) amount, labels); } } - /** {@inheritDoc} */ @Override public void incWithExemplar(double amount, Labels labels) { validateAndAdd(amount); diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Gauge.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Gauge.java index a3f7e290d..4ba5d5ed3 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Gauge.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Gauge.java @@ -54,37 +54,31 @@ private Gauge(Builder builder, PrometheusProperties prometheusProperties) { } } - /** {@inheritDoc} */ @Override public void inc(double amount) { getNoLabels().inc(amount); } - /** {@inheritDoc} */ @Override public double get() { return getNoLabels().get(); } - /** {@inheritDoc} */ @Override public void incWithExemplar(double amount, Labels labels) { getNoLabels().incWithExemplar(amount, labels); } - /** {@inheritDoc} */ @Override public void set(double value) { getNoLabels().set(value); } - /** {@inheritDoc} */ @Override public void setWithExemplar(double value, Labels labels) { getNoLabels().setWithExemplar(value, labels); } - /** {@inheritDoc} */ @Override public GaugeSnapshot collect() { return (GaugeSnapshot) super.collect(); @@ -123,7 +117,6 @@ private DataPoint(ExemplarSampler exemplarSampler) { private final AtomicLong value = new AtomicLong(Double.doubleToRawLongBits(0)); - /** {@inheritDoc} */ @Override public void inc(double amount) { long next = @@ -133,7 +126,6 @@ public void inc(double amount) { } } - /** {@inheritDoc} */ @Override public void incWithExemplar(double amount, Labels labels) { long next = @@ -143,7 +135,6 @@ public void incWithExemplar(double amount, Labels labels) { } } - /** {@inheritDoc} */ @Override public void set(double value) { this.value.set(Double.doubleToRawLongBits(value)); @@ -152,13 +143,11 @@ public void set(double value) { } } - /** {@inheritDoc} */ @Override public double get() { return Double.longBitsToDouble(value.get()); } - /** {@inheritDoc} */ @Override public void setWithExemplar(double value, Labels labels) { this.value.set(Double.doubleToRawLongBits(value)); diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java index 2952222c6..bf70bec7c 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java @@ -165,13 +165,11 @@ private Histogram(Histogram.Builder builder, PrometheusProperties prometheusProp : new ExemplarSamplerConfig(exemplarsProperties, classicUpperBounds); } - /** {@inheritDoc} */ @Override public void observe(double amount) { getNoLabels().observe(amount); } - /** {@inheritDoc} */ @Override public void observeWithExemplar(double amount, Labels labels) { getNoLabels().observeWithExemplar(amount, labels); @@ -212,7 +210,6 @@ private DataPoint() { maybeScheduleNextReset(); } - /** {@inheritDoc} */ @Override public void observe(double value) { if (Double.isNaN(value)) { @@ -227,7 +224,6 @@ public void observe(double value) { } } - /** {@inheritDoc} */ @Override public void observeWithExemplar(double value, Labels labels) { if (Double.isNaN(value)) { @@ -574,6 +570,7 @@ private int findSmallestIndex(Map nativeBuckets) { // doubleBucketWidth is called in the synchronized block while new observations go into the // buffer. + @SuppressWarnings("NonAtomicVolatileUpdate") private void doubleBucketWidth() { doubleBucketWidth(nativeBucketsForPositiveValues); doubleBucketWidth(nativeBucketsForNegativeValues); @@ -609,6 +606,7 @@ private NativeHistogramBuckets toBucketList(ConcurrentHashMap 0) { Scheduler.schedule( @@ -617,7 +615,6 @@ private void maybeScheduleNextReset() { } } - /** {@inheritDoc} */ @Override public HistogramSnapshot collect() { return (HistogramSnapshot) super.collect(); @@ -667,8 +664,10 @@ public static Builder builder(PrometheusProperties config) { public static class Builder extends StatefulMetric.Builder { + @SuppressWarnings("MutablePublicArray") public static final double[] DEFAULT_CLASSIC_UPPER_BOUNDS = new double[] {.005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10}; + private final double DEFAULT_NATIVE_MIN_ZERO_THRESHOLD = Math.pow(2.0, -128); private final double DEFAULT_NATIVE_MAX_ZERO_THRESHOLD = Math.pow(2.0, -128); private final int DEFAULT_NATIVE_INITIAL_SCHEMA = 5; diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Info.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Info.java index 49f8a1eb5..aac918943 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Info.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Info.java @@ -91,7 +91,6 @@ public void remove(String... labelValues) { labels.remove(toBeRemoved); } - /** {@inheritDoc} */ @Override public InfoSnapshot collect() { List data = new ArrayList<>(labels.size()); diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/MetricWithFixedMetadata.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/MetricWithFixedMetadata.java index c121d0c56..056ef792c 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/MetricWithFixedMetadata.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/MetricWithFixedMetadata.java @@ -91,6 +91,7 @@ public B labelNames(String... labelNames) { return self(); } + @Override public B constLabels(Labels constLabels) { for (String labelName : labelNames) { if (constLabels.contains(labelName)) { // Labels.contains() treats dots like underscores diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java index e4d9eff88..20eb1783e 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java @@ -71,19 +71,16 @@ private StateSet(Builder builder, PrometheusProperties prometheusProperties) { } } - /** {@inheritDoc} */ @Override public StateSetSnapshot collect() { return (StateSetSnapshot) super.collect(); } - /** {@inheritDoc} */ @Override public void setTrue(String state) { getNoLabels().setTrue(state); } - /** {@inheritDoc} */ @Override public void setFalse(String state) { getNoLabels().setFalse(state); @@ -116,13 +113,11 @@ class DataPoint implements StateSetDataPoint { private DataPoint() {} - /** {@inheritDoc} */ @Override public void setTrue(String state) { set(state, true); } - /** {@inheritDoc} */ @Override public void setFalse(String state) { set(state, false); diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StatefulMetric.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StatefulMetric.java index 1d2bfe02e..67523eeee 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StatefulMetric.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StatefulMetric.java @@ -47,6 +47,7 @@ protected StatefulMetric(Builder builder) { */ protected abstract MetricSnapshot collect(List labels, List metricData); + @Override public MetricSnapshot collect() { if (labelNames.length == 0 && data.isEmpty()) { // This is a metric without labels that has not been used yet. Initialize the data on the fly. @@ -157,9 +158,9 @@ protected MetricsProperties[] getMetricProperties( } } - protected T getConfigProperty( - MetricsProperties[] properties, Function getter) { - T result; + protected

P getConfigProperty( + MetricsProperties[] properties, Function getter) { + P result; for (MetricsProperties props : properties) { result = getter.apply(props); if (result != null) { diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java index 126626799..ddb3eb7f2 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java @@ -82,19 +82,16 @@ protected boolean isExemplarsEnabled() { return exemplarsEnabled; } - /** {@inheritDoc} */ @Override public void observe(double amount) { getNoLabels().observe(amount); } - /** {@inheritDoc} */ @Override public void observeWithExemplar(double amount, Labels labels) { getNoLabels().observeWithExemplar(amount, labels); } - /** {@inheritDoc} */ @Override public SummarySnapshot collect() { return (SummarySnapshot) super.collect(); @@ -144,7 +141,6 @@ private DataPoint() { } } - /** {@inheritDoc} */ @Override public void observe(double value) { if (Double.isNaN(value)) { @@ -158,7 +154,6 @@ public void observe(double value) { } } - /** {@inheritDoc} */ @Override public void observeWithExemplar(double value, Labels labels) { if (Double.isNaN(value)) { diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/util/Scheduler.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/util/Scheduler.java index 6af7fa54a..96e0643c5 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/util/Scheduler.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/util/Scheduler.java @@ -14,6 +14,7 @@ public class Scheduler { private static class DaemonThreadFactory implements ThreadFactory { + @Override public Thread newThread(Runnable runnable) { Thread thread = new Thread(runnable); thread.setDaemon(true); @@ -29,6 +30,7 @@ public static ScheduledFuture schedule(Runnable command, long delay, TimeUnit } /** For unit test. Wait until the executor Thread is running. */ + @SuppressWarnings("FutureReturnValueIgnored") public static void awaitInitialization() throws InterruptedException { CountDownLatch latch = new CountDownLatch(1); Scheduler.schedule(latch::countDown, 0, TimeUnit.MILLISECONDS); diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/exemplars/ExemplarSamplerTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/exemplars/ExemplarSamplerTest.java index 1572eb645..059929c22 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/exemplars/ExemplarSamplerTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/exemplars/ExemplarSamplerTest.java @@ -31,11 +31,10 @@ private static class SpanContext implements io.prometheus.metrics.tracer.common. int callCount = 0; boolean isSampled = true; - boolean isExemplar = false; @Override public String getCurrentTraceId() { - return "" + (callCount++); + return "" + callCount++; } @Override @@ -49,9 +48,7 @@ public boolean isCurrentSpanSampled() { } @Override - public void markCurrentSpanAsExemplar() { - isExemplar = true; - } + public void markCurrentSpanAsExemplar() {} } @Test diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java index 4d55c3236..53280ba72 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java @@ -1498,7 +1498,7 @@ public void testObserveMultithreaded() } } assertThat(maxCount) - .isEqualTo(nThreads * 10_000); // the last collect() has seen all observations + .isEqualTo(nThreads * 10_000L); // the last collect() has seen all observations assertThat(nThreads * 10_000).isEqualTo(getBucket(histogram, 2.5, "status", "200").getCount()); executor.shutdown(); assertThat(executor.awaitTermination(5, TimeUnit.SECONDS)).isTrue(); @@ -1509,6 +1509,9 @@ private HistogramSnapshot.HistogramDataPointSnapshot getData( return histogram.collect().getDataPoints().stream() .filter(d -> d.getLabels().equals(Labels.of(labels))) .findAny() - .orElseThrow(() -> new RuntimeException("histogram with labels " + labels + " not found")); + .orElseThrow( + () -> + new RuntimeException( + "histogram with labels " + Arrays.toString(labels) + " not found")); } } diff --git a/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequest.java b/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequest.java index 954facfef..6dc632cd9 100644 --- a/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequest.java +++ b/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequest.java @@ -38,6 +38,7 @@ default String getParameter(String name) { } /** See {@code jakarta.servlet.ServletRequest.getParameterValues(String)} */ + @Override default String[] getParameterValues(String name) { try { ArrayList result = new ArrayList<>(); diff --git a/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HTTPServer.java b/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HTTPServer.java index 54e71d769..46c719bc1 100644 --- a/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HTTPServer.java +++ b/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HTTPServer.java @@ -326,6 +326,7 @@ public void rejectedExecution(Runnable runnable, ThreadPoolExecutor threadPoolEx try { threadPoolExecutor.getQueue().put(runnable); } catch (InterruptedException ignored) { + // ignore } } } diff --git a/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java b/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java index fc7df1dc9..ccc99bd01 100644 --- a/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java +++ b/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java @@ -22,7 +22,7 @@ public void testSubjectDoAs() throws Exception { final String user = "joe"; final Subject subject = new Subject(); - subject.getPrincipals().add(() -> (user)); + subject.getPrincipals().add(() -> user); Authenticator authenticator = new Authenticator() { @@ -68,7 +68,7 @@ public Result authenticate(HttpExchange exchange) { byte[] resp = new byte[500]; int read = socket.getInputStream().read(resp, 0, resp.length); if (read > 0) { - actualResponse = new String(resp, 0, read); + actualResponse = new String(resp, 0, read, StandardCharsets.UTF_8); } assertThat(actualResponse).contains("204"); diff --git a/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.java b/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.java index c462a9d59..82f503ac9 100644 --- a/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.java +++ b/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.java @@ -14,6 +14,7 @@ import io.prometheus.metrics.model.registry.PrometheusRegistry; import java.time.Duration; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -58,6 +59,7 @@ private OpenTelemetryExporter( reader.register(prometheusMetricProducer); } + @Override public void close() { reader.shutdown(); } @@ -445,7 +447,8 @@ private static Map getResourceAttributes( } private static String getString(String otelPropertyName) { - String otelEnvVarName = otelPropertyName.replace(".", "_").replace("-", "_").toUpperCase(); + String otelEnvVarName = + otelPropertyName.replace(".", "_").replace("-", "_").toUpperCase(Locale.ROOT); if (System.getenv(otelEnvVarName) != null) { return System.getenv(otelEnvVarName); } diff --git a/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/ResourceAttributesFromOtelAgent.java b/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/ResourceAttributesFromOtelAgent.java index 698db602f..ce6baafe2 100644 --- a/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/ResourceAttributesFromOtelAgent.java +++ b/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/ResourceAttributesFromOtelAgent.java @@ -63,6 +63,7 @@ public static void addIfAbsent(Map result, String instrumentatio deleteTempDir(tmpDir.toFile()); } } catch (Exception ignored) { + // ignore } } diff --git a/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/otelmodel/PrometheusClassicHistogram.java b/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/otelmodel/PrometheusClassicHistogram.java index fc31e6333..18e0151b2 100644 --- a/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/otelmodel/PrometheusClassicHistogram.java +++ b/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/otelmodel/PrometheusClassicHistogram.java @@ -58,7 +58,7 @@ private HistogramPointData toOtelDataPoint( } private long calculateCount(ClassicHistogramBuckets buckets) { - int result = 0; + long result = 0; for (int i = 0; i < buckets.size(); i++) { result += buckets.getCount(i); } diff --git a/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java b/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java index d879c3105..2b986adb4 100644 --- a/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java +++ b/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java @@ -391,7 +391,7 @@ private String getJob(ExporterPushgatewayProperties properties) { } } - private Format getFormat(ExporterPushgatewayProperties properties) { + private Format getFormat() { // currently not configurable via properties if (this.format != null) { return this.format; @@ -434,11 +434,7 @@ public PushGateway build() { config == null ? null : config.getExporterPushgatewayProperties(); try { return new PushGateway( - registry, - getFormat(properties), - makeUrl(properties), - connectionFactory, - requestHeaders); + registry, getFormat(), makeUrl(properties), connectionFactory, requestHeaders); } catch (MalformedURLException e) { throw new PrometheusPropertiesException( address + ": Invalid address. Expecting :"); diff --git a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetricsTextFormatWriter.java b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetricsTextFormatWriter.java index 10f54848b..3d3eb862a 100644 --- a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetricsTextFormatWriter.java +++ b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetricsTextFormatWriter.java @@ -63,10 +63,11 @@ public String getContentType() { return CONTENT_TYPE; } + @Override public void write(OutputStream out, MetricSnapshots metricSnapshots) throws IOException { OutputStreamWriter writer = new OutputStreamWriter(out, StandardCharsets.UTF_8); for (MetricSnapshot snapshot : metricSnapshots) { - if (snapshot.getDataPoints().size() > 0) { + if (!snapshot.getDataPoints().isEmpty()) { if (snapshot instanceof CounterSnapshot) { writeCounter(writer, (CounterSnapshot) snapshot); } else if (snapshot instanceof GaugeSnapshot) { diff --git a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusTextFormatWriter.java b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusTextFormatWriter.java index 786e1d9bd..cdc02c26b 100644 --- a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusTextFormatWriter.java +++ b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusTextFormatWriter.java @@ -54,6 +54,7 @@ public String getContentType() { return CONTENT_TYPE; } + @Override public void write(OutputStream out, MetricSnapshots metricSnapshots) throws IOException { // See https://prometheus.io/docs/instrumenting/exposition_formats/ // "unknown", "gauge", "counter", "stateset", "info", "histogram", "gaugehistogram", and diff --git a/prometheus-metrics-instrumentation-caffeine/src/test/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollectorTest.java b/prometheus-metrics-instrumentation-caffeine/src/test/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollectorTest.java index 4416c3e49..37f5f3670 100644 --- a/prometheus-metrics-instrumentation-caffeine/src/test/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollectorTest.java +++ b/prometheus-metrics-instrumentation-caffeine/src/test/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollectorTest.java @@ -21,6 +21,7 @@ import java.nio.charset.StandardCharsets; import org.junit.jupiter.api.Test; +@SuppressWarnings("CheckReturnValue") class CacheMetricsCollectorTest { @Test diff --git a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/DropwizardExports.java b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/DropwizardExports.java index 6d99c176d..c4418b432 100644 --- a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/DropwizardExports.java +++ b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/DropwizardExports.java @@ -75,7 +75,7 @@ MetricSnapshot fromCounter(String dropwizardName, Counter counter) { CounterSnapshot.CounterDataPointSnapshot.Builder dataPointBuilder = CounterSnapshot.CounterDataPointSnapshot.builder() .value(Long.valueOf(counter.getCount()).doubleValue()); - labelMapper.map( + labelMapper.ifPresent( mapper -> dataPointBuilder.labels( mapper.getLabels( @@ -103,7 +103,7 @@ MetricSnapshot fromGauge(String dropwizardName, Gauge gauge) { MetricMetadata metadata = getMetricMetaData(dropwizardName, gauge); GaugeSnapshot.GaugeDataPointSnapshot.Builder dataPointBuilder = GaugeSnapshot.GaugeDataPointSnapshot.builder().value(value); - labelMapper.map( + labelMapper.ifPresent( mapper -> dataPointBuilder.labels( mapper.getLabels( @@ -135,7 +135,7 @@ MetricSnapshot fromSnapshotAndCount( new MetricMetadata(PrometheusNaming.sanitizeMetricName(dropwizardName), helpMessage); SummarySnapshot.SummaryDataPointSnapshot.Builder dataPointBuilder = SummarySnapshot.SummaryDataPointSnapshot.builder().quantiles(quantiles).count(count); - labelMapper.map( + labelMapper.ifPresent( mapper -> dataPointBuilder.labels( mapper.getLabels( @@ -168,7 +168,7 @@ MetricSnapshot fromMeter(String dropwizardName, Meter meter) { MetricMetadata metadata = getMetricMetaData(dropwizardName + "_total", meter); CounterSnapshot.CounterDataPointSnapshot.Builder dataPointBuilder = CounterSnapshot.CounterDataPointSnapshot.builder().value(meter.getCount()); - labelMapper.map( + labelMapper.ifPresent( mapper -> dataPointBuilder.labels( mapper.getLabels( @@ -180,22 +180,20 @@ MetricSnapshot fromMeter(String dropwizardName, Meter meter) { public MetricSnapshots collect() { MetricSnapshots.Builder metricSnapshots = MetricSnapshots.builder(); for (@SuppressWarnings("rawtypes") - SortedMap.Entry entry : registry.getGauges(metricFilter).entrySet()) { + Map.Entry entry : registry.getGauges(metricFilter).entrySet()) { Optional.ofNullable(fromGauge(entry.getKey().getKey(), entry.getValue())) - .map(metricSnapshots::metricSnapshot); + .ifPresent(metricSnapshots::metricSnapshot); } - for (SortedMap.Entry entry : - registry.getCounters(metricFilter).entrySet()) { + for (Map.Entry entry : registry.getCounters(metricFilter).entrySet()) { metricSnapshots.metricSnapshot(fromCounter(entry.getKey().getKey(), entry.getValue())); } - for (SortedMap.Entry entry : - registry.getHistograms(metricFilter).entrySet()) { + for (Map.Entry entry : registry.getHistograms(metricFilter).entrySet()) { metricSnapshots.metricSnapshot(fromHistogram(entry.getKey().getKey(), entry.getValue())); } - for (SortedMap.Entry entry : registry.getTimers(metricFilter).entrySet()) { + for (Map.Entry entry : registry.getTimers(metricFilter).entrySet()) { metricSnapshots.metricSnapshot(fromTimer(entry.getKey().getKey(), entry.getValue())); } - for (SortedMap.Entry entry : registry.getMeters(metricFilter).entrySet()) { + for (Map.Entry entry : registry.getMeters(metricFilter).entrySet()) { metricSnapshots.metricSnapshot(fromMeter(entry.getKey().getKey(), entry.getValue())); } return metricSnapshots.build(); diff --git a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/MapperConfig.java b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/MapperConfig.java index 19e52d788..f69a27944 100644 --- a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/MapperConfig.java +++ b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/MapperConfig.java @@ -14,7 +14,7 @@ *

Dropwizard metrics that match the "match" pattern will be further processed to have a new name * and new labels based on this config. */ -public class MapperConfig { +public final class MapperConfig { // each part of the metric name between dots private static final String METRIC_PART_REGEX = "[a-zA-Z_0-9](-?[a-zA-Z0-9_])+"; // Simplified GLOB: we can have "*." at the beginning and "*" only at the end diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetrics.java index 3bd39a59f..671c36c97 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetrics.java @@ -51,8 +51,7 @@ public class JvmMemoryPoolAllocationMetrics { private final List garbageCollectorBeans; - private JvmMemoryPoolAllocationMetrics( - List garbageCollectorBeans, PrometheusProperties config) { + private JvmMemoryPoolAllocationMetrics(List garbageCollectorBeans) { this.garbageCollectorBeans = garbageCollectorBeans; } @@ -142,21 +141,18 @@ private static long getAndSet(Map map, String key, long value) { } public static Builder builder() { - return new Builder(PrometheusProperties.get()); + return new Builder(); } + @SuppressWarnings("unused") public static Builder builder(PrometheusProperties config) { - return new Builder(config); + return new Builder(); } public static class Builder { - - private final PrometheusProperties config; private List garbageCollectorBeans; - private Builder(PrometheusProperties config) { - this.config = config; - } + private Builder() {} /** Package private. For testing only. */ Builder withGarbageCollectorBeans(List garbageCollectorBeans) { @@ -173,7 +169,7 @@ public void register(PrometheusRegistry registry) { if (garbageCollectorBeans == null) { garbageCollectorBeans = ManagementFactory.getGarbageCollectorMXBeans(); } - new JvmMemoryPoolAllocationMetrics(garbageCollectorBeans, config).register(registry); + new JvmMemoryPoolAllocationMetrics(garbageCollectorBeans).register(registry); } } } diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/ProcessMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/ProcessMetrics.java index bd7fb14b1..a854f5e89 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/ProcessMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/ProcessMetrics.java @@ -7,13 +7,15 @@ import io.prometheus.metrics.model.snapshots.Unit; import java.io.BufferedReader; import java.io.File; -import java.io.FileReader; import java.io.IOException; +import java.io.InputStreamReader; import java.lang.management.ManagementFactory; import java.lang.management.OperatingSystemMXBean; import java.lang.management.RuntimeMXBean; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; /** * Process metrics. @@ -112,6 +114,7 @@ private void register(PrometheusRegistry registry) { callback.call(Unit.nanosToSeconds(processCpuTime)); } } catch (Exception ignored) { + // Ignored } }) .register(registry); @@ -134,6 +137,7 @@ private void register(PrometheusRegistry registry) { callback.call(openFds); } } catch (Exception ignored) { + // Ignored } }) .register(registry); @@ -149,6 +153,7 @@ private void register(PrometheusRegistry registry) { callback.call(maxFds); } } catch (Exception ignored) { + // Ignored } }) .register(registry); @@ -165,6 +170,7 @@ private void register(PrometheusRegistry registry) { String line = grepper.lineStartingWith(PROC_SELF_STATUS, "VmSize:"); callback.call(Unit.kiloBytesToBytes(Double.parseDouble(line.split("\\s+")[1]))); } catch (Exception ignored) { + // Ignored } }) .register(registry); @@ -179,6 +185,7 @@ private void register(PrometheusRegistry registry) { String line = grepper.lineStartingWith(PROC_SELF_STATUS, "VmRSS:"); callback.call(Unit.kiloBytesToBytes(Double.parseDouble(line.split("\\s+")[1]))); } catch (Exception ignored) { + // Ignored } }) .register(registry); @@ -235,7 +242,9 @@ private static class FileGrepper implements Grepper { @Override public String lineStartingWith(File file, String prefix) throws IOException { - try (BufferedReader reader = new BufferedReader(new FileReader(file))) { + try (BufferedReader reader = + new BufferedReader( + new InputStreamReader(Files.newInputStream(file.toPath()), StandardCharsets.UTF_8))) { String line = reader.readLine(); while (line != null) { if (line.startsWith(prefix)) { diff --git a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetricsTest.java b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetricsTest.java index fe97561aa..9c9e069b6 100644 --- a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetricsTest.java +++ b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetricsTest.java @@ -109,6 +109,7 @@ public void testInvalidThreadIds() { return; } } catch (NumberFormatException ignored) { + // ignore } PrometheusRegistry registry = new PrometheusRegistry(); JvmThreadsMetrics.builder().register(registry); diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBuckets.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBuckets.java index 6b5d4dea6..09e75181b 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBuckets.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBuckets.java @@ -35,7 +35,7 @@ private ClassicHistogramBuckets(double[] upperBounds, long[] counts) { * contain at least {@link Double#POSITIVE_INFINITY} for the {@code +Inf} bucket. An upper * bound must not be {@link Double#NaN}. The upperBounds array does not need to be sorted. * @param counts must have the same length as {@code upperBounds}. The entry at index {@code i} is - * the count for the {@code upperBound} at index {@code i}. For each count, {@link + * the count for the {@code upperBounds} at index {@code i}. For each count, {@link * Number#longValue()} is called to get the value. Counts are not cumulative. Counts * must not be negative. */ @@ -63,7 +63,7 @@ public static ClassicHistogramBuckets of( * contain at least {@link Double#POSITIVE_INFINITY} for the {@code +Inf} bucket. An upper * bound must not be {@link Double#NaN}. The upperBounds array does not need to be sorted. * @param counts must have the same length as {@code upperBounds}. The entry at index {@code i} is - * the count for the {@code upperBound} at index {@code i}. For each count, {@link + * the count for the {@code upperBounds} at index {@code i}. For each count, {@link * Number#longValue()} is called to get the value. Counts are not cumulative. Counts * must not be negative. */ @@ -87,7 +87,7 @@ public static ClassicHistogramBuckets of(double[] upperBounds, Number[] counts) * contain at least {@link Double#POSITIVE_INFINITY} for the {@code +Inf} bucket. An upper * bound must not be {@link Double#NaN}. The upperBounds array does not need to be sorted. * @param counts must have the same length as {@code upperBounds}. The entry at index {@code i} is - * the count for the {@code upperBound} at index {@code i}. Counts are not cumulative. + * the count for the {@code upperBounds} at index {@code i}. Counts are not cumulative. * Counts must not be negative. */ public static ClassicHistogramBuckets of(double[] upperBounds, long[] counts) { diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Labels.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Labels.java index 170ec4fc2..dcb32f3bc 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Labels.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Labels.java @@ -11,7 +11,7 @@ import java.util.stream.Stream; /** Immutable set of name/value pairs, sorted by name. */ -public class Labels implements Comparable, Iterable