From d78cadabaa5ef1d423b89b1aaec0bd381d86ebd8 Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Fri, 8 Apr 2022 08:12:57 +0900 Subject: [PATCH] Update errorprone (#4346) --- .../opentelemetry/api/GlobalOpenTelemetry.java | 2 ++ .../otel.errorprone-conventions.gradle.kts | 4 +++- dependencyManagement/build.gradle.kts | 2 +- .../internal/marshal/CodedOutputStream.java | 2 +- .../exporter/prometheus/MetricAdapter.java | 8 ++++---- .../exporter/prometheus/Serializer.java | 16 ++++++++++++---- .../main/java/io/opentelemetry/Application.java | 2 +- .../micrometer1shim/OpenTelemetryTimer.java | 11 ++++++----- .../sdk/extension/zpages/LatencyBoundary.java | 3 +++ .../io/opentelemetry/sdk/metrics/TestSdk.java | 4 ++-- .../internal/state/CallbackRegistrationTest.java | 6 +++--- .../errorreporting/ErrorReportingTest.java | 12 ++++-------- 12 files changed, 42 insertions(+), 30 deletions(-) diff --git a/api/all/src/main/java/io/opentelemetry/api/GlobalOpenTelemetry.java b/api/all/src/main/java/io/opentelemetry/api/GlobalOpenTelemetry.java index 7dde9cb7cc..43f2c7454b 100644 --- a/api/all/src/main/java/io/opentelemetry/api/GlobalOpenTelemetry.java +++ b/api/all/src/main/java/io/opentelemetry/api/GlobalOpenTelemetry.java @@ -40,6 +40,8 @@ import javax.annotation.concurrent.ThreadSafe; * @see TracerProvider * @see ContextPropagators */ +// We intentionally assign to be use for error reporting. +@SuppressWarnings("StaticAssignmentOfThrowable") public final class GlobalOpenTelemetry { private static final Logger logger = Logger.getLogger(GlobalOpenTelemetry.class.getName()); diff --git a/buildSrc/src/main/kotlin/otel.errorprone-conventions.gradle.kts b/buildSrc/src/main/kotlin/otel.errorprone-conventions.gradle.kts index 78999dfe84..016bb02896 100644 --- a/buildSrc/src/main/kotlin/otel.errorprone-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/otel.errorprone-conventions.gradle.kts @@ -21,6 +21,9 @@ tasks { disableWarningsInGeneratedCode.set(true) allDisabledChecksAsWarnings.set(true) + // Still Java 8 + disable("Varifier") + // Doesn't currently use Var annotations. disable("Var") // "-Xep:Var:OFF" @@ -49,7 +52,6 @@ tasks { disable("StaticOrDefaultInterfaceMethod") // Limits APIs - disable("NoFunctionalReturnType") disable("PreferredInterfaceType") // We don't depend on Guava so use normal splitting diff --git a/dependencyManagement/build.gradle.kts b/dependencyManagement/build.gradle.kts index 7ee78078c8..f6ea1ff1c8 100644 --- a/dependencyManagement/build.gradle.kts +++ b/dependencyManagement/build.gradle.kts @@ -34,7 +34,7 @@ val DEPENDENCY_SETS = listOf( ), DependencySet( "com.google.errorprone", - "2.11.0", + "2.12.1", listOf("error_prone_annotations", "error_prone_core") ), DependencySet( diff --git a/exporters/otlp/common/src/main/java/io/opentelemetry/exporter/internal/marshal/CodedOutputStream.java b/exporters/otlp/common/src/main/java/io/opentelemetry/exporter/internal/marshal/CodedOutputStream.java index 68967190af..4280de65c7 100644 --- a/exporters/otlp/common/src/main/java/io/opentelemetry/exporter/internal/marshal/CodedOutputStream.java +++ b/exporters/otlp/common/src/main/java/io/opentelemetry/exporter/internal/marshal/CodedOutputStream.java @@ -62,7 +62,7 @@ import java.io.OutputStream; // - No support for writing fields with tag, we alway write tags separately // - Allow resetting and use a ThreadLocal instance // -@SuppressWarnings({"UnnecessaryFinal", "UngroupedOverloads", "InlineMeSuggester"}) +@SuppressWarnings({"UnnecessaryFinal", "UngroupedOverloads", "InlineMeSuggester", "UnusedVariable"}) public abstract class CodedOutputStream { /** The buffer size used in {@link #newInstance(OutputStream)}. */ diff --git a/exporters/prometheus/src/integrationTest/java/io/opentelemetry/exporter/prometheus/MetricAdapter.java b/exporters/prometheus/src/integrationTest/java/io/opentelemetry/exporter/prometheus/MetricAdapter.java index 06e269da1f..1e4a984cef 100644 --- a/exporters/prometheus/src/integrationTest/java/io/opentelemetry/exporter/prometheus/MetricAdapter.java +++ b/exporters/prometheus/src/integrationTest/java/io/opentelemetry/exporter/prometheus/MetricAdapter.java @@ -141,7 +141,7 @@ final class MetricAdapter { name, labelNames, labelValues, - longPoint.getValue(), + (double) longPoint.getValue(), // Prometheus doesn't support exemplars on SUM/GAUGE null, longPoint.getEpochNanos())); @@ -171,7 +171,7 @@ final class MetricAdapter { name + SAMPLE_SUFFIX_COUNT, labelNames, labelValues, - doubleSummaryPoint.getCount(), + (double) doubleSummaryPoint.getCount(), null, doubleSummaryPoint.getEpochNanos())); @@ -214,7 +214,7 @@ final class MetricAdapter { name + SAMPLE_SUFFIX_COUNT, labelNames, labelValues, - histogramPointData.getCount(), + (double) histogramPointData.getCount(), null, histogramPointData.getEpochNanos())); @@ -247,7 +247,7 @@ final class MetricAdapter { name + SAMPLE_SUFFIX_BUCKET, labelNamesWithLe, labelValuesWithLe, - cumulativeCount, + (double) cumulativeCount, filterExemplars( histogramPointData.getExemplars(), Serializer.getBucketLowerBound(histogramPointData, i), diff --git a/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/Serializer.java b/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/Serializer.java index 072e410cd5..1362736a58 100644 --- a/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/Serializer.java +++ b/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/Serializer.java @@ -145,7 +145,7 @@ abstract class Serializer { writePoint( writer, name, - ((LongPointData) point).getValue(), + (double) ((LongPointData) point).getValue(), point.getAttributes(), point.getEpochNanos()); break; @@ -164,7 +164,11 @@ abstract class Serializer { private void writeHistogram(Writer writer, String name, HistogramPointData point) throws IOException { writePoint( - writer, name + "_count", point.getCount(), point.getAttributes(), point.getEpochNanos()); + writer, + name + "_count", + (double) point.getCount(), + point.getAttributes(), + point.getEpochNanos()); writePoint(writer, name + "_sum", point.getSum(), point.getAttributes(), point.getEpochNanos()); long cumulativeCount = 0; @@ -178,7 +182,7 @@ abstract class Serializer { writePoint( writer, name + "_bucket", - cumulativeCount, + (double) cumulativeCount, point.getAttributes(), point.getEpochNanos(), "le", @@ -212,7 +216,11 @@ abstract class Serializer { private void writeSummary(Writer writer, String name, SummaryPointData point) throws IOException { writePoint( - writer, name + "_count", point.getCount(), point.getAttributes(), point.getEpochNanos()); + writer, + name + "_count", + (double) point.getCount(), + point.getAttributes(), + point.getEpochNanos()); writePoint(writer, name + "_sum", point.getSum(), point.getAttributes(), point.getEpochNanos()); List valueAtQuantiles = point.getValues(); diff --git a/integration-tests/tracecontext/src/main/java/io/opentelemetry/Application.java b/integration-tests/tracecontext/src/main/java/io/opentelemetry/Application.java index a0054f32ce..35c7e84652 100644 --- a/integration-tests/tracecontext/src/main/java/io/opentelemetry/Application.java +++ b/integration-tests/tracecontext/src/main/java/io/opentelemetry/Application.java @@ -75,7 +75,7 @@ public final class Application { } } - private static class Service { + static class Service { private final WebClient client = WebClient.of(); @Post("/verify-tracecontext") diff --git a/micrometer1-shim/src/main/java/io/opentelemetry/micrometer1shim/OpenTelemetryTimer.java b/micrometer1-shim/src/main/java/io/opentelemetry/micrometer1shim/OpenTelemetryTimer.java index 9561e3a2d0..2c4b31b525 100644 --- a/micrometer1-shim/src/main/java/io/opentelemetry/micrometer1shim/OpenTelemetryTimer.java +++ b/micrometer1-shim/src/main/java/io/opentelemetry/micrometer1shim/OpenTelemetryTimer.java @@ -23,6 +23,7 @@ import io.opentelemetry.api.metrics.Meter; import io.opentelemetry.api.metrics.ObservableDoubleGauge; import java.util.Collections; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.DoubleAdder; import java.util.concurrent.atomic.LongAdder; final class OpenTelemetryTimer extends AbstractTimer implements RemovableMeter { @@ -80,7 +81,7 @@ final class OpenTelemetryTimer extends AbstractTimer implements RemovableMeter { @Override protected void recordNonNegative(long amount, TimeUnit unit) { if (!removed) { - long nanos = unit.toNanos(amount); + double nanos = (double) unit.toNanos(amount); double time = TimeUtils.nanosToUnit(nanos, baseTimeUnit); otelHistogram.record(time, attributes); measurements.record(nanos); @@ -116,7 +117,7 @@ final class OpenTelemetryTimer extends AbstractTimer implements RemovableMeter { } private interface Measurements { - void record(long nanos); + void record(double nanos); long count(); @@ -129,7 +130,7 @@ final class OpenTelemetryTimer extends AbstractTimer implements RemovableMeter { INSTANCE; @Override - public void record(long nanos) {} + public void record(double nanos) {} @Override public long count() { @@ -149,10 +150,10 @@ final class OpenTelemetryTimer extends AbstractTimer implements RemovableMeter { private static final class MicrometerHistogramMeasurements implements Measurements { private final LongAdder count = new LongAdder(); - private final LongAdder totalTime = new LongAdder(); + private final DoubleAdder totalTime = new DoubleAdder(); @Override - public void record(long nanos) { + public void record(double nanos) { count.increment(); totalTime.add(nanos); } diff --git a/sdk-extensions/zpages/src/main/java/io/opentelemetry/sdk/extension/zpages/LatencyBoundary.java b/sdk-extensions/zpages/src/main/java/io/opentelemetry/sdk/extension/zpages/LatencyBoundary.java index 5f8a7b3f08..63e9e0442d 100644 --- a/sdk-extensions/zpages/src/main/java/io/opentelemetry/sdk/extension/zpages/LatencyBoundary.java +++ b/sdk-extensions/zpages/src/main/java/io/opentelemetry/sdk/extension/zpages/LatencyBoundary.java @@ -12,6 +12,9 @@ import java.util.concurrent.TimeUnit; * io.opentelemetry.api.trace.Status#OK} are categorized into one of these buckets om the traceZ * zPage. */ +// TODO(anuraaga): Consider renaming the enums that don't follow our standard convention for +// constants. +@SuppressWarnings("MemberName") enum LatencyBoundary { /** Stores finished successful requests of duration within the interval [0, 10us). */ ZERO_MICROSx10(0, TimeUnit.MICROSECONDS.toNanos(10)), diff --git a/sdk/metrics/src/jmh/java/io/opentelemetry/sdk/metrics/TestSdk.java b/sdk/metrics/src/jmh/java/io/opentelemetry/sdk/metrics/TestSdk.java index 786cf967f5..6100fd61fb 100644 --- a/sdk/metrics/src/jmh/java/io/opentelemetry/sdk/metrics/TestSdk.java +++ b/sdk/metrics/src/jmh/java/io/opentelemetry/sdk/metrics/TestSdk.java @@ -63,13 +63,13 @@ public enum TestSdk { } public Tracer getTracer() { - return sdkBuilder.buildTracer(); + return SdkBuilder.buildTracer(); } private abstract static class SdkBuilder { abstract Meter build(); - protected Tracer buildTracer() { + protected static Tracer buildTracer() { return SdkTracerProvider.builder() .setSampler(Sampler.alwaysOn()) .build() diff --git a/sdk/metrics/src/test/java/io/opentelemetry/sdk/metrics/internal/state/CallbackRegistrationTest.java b/sdk/metrics/src/test/java/io/opentelemetry/sdk/metrics/internal/state/CallbackRegistrationTest.java index 435cc8e090..4c26ea26d3 100644 --- a/sdk/metrics/src/test/java/io/opentelemetry/sdk/metrics/internal/state/CallbackRegistrationTest.java +++ b/sdk/metrics/src/test/java/io/opentelemetry/sdk/metrics/internal/state/CallbackRegistrationTest.java @@ -21,7 +21,7 @@ import io.opentelemetry.sdk.metrics.InstrumentValueType; import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor; import java.util.Arrays; import java.util.Collections; -import java.util.concurrent.atomic.AtomicLong; +import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -74,7 +74,7 @@ class CallbackRegistrationTest { @Test void invokeCallback_Long() { - AtomicLong counter = new AtomicLong(); + AtomicInteger counter = new AtomicInteger(); Consumer callback = measurement -> measurement.record( @@ -92,7 +92,7 @@ class CallbackRegistrationTest { @Test void invokeCallback_NoStorage() { - AtomicLong counter = new AtomicLong(); + AtomicInteger counter = new AtomicInteger(); Consumer callback = measurement -> measurement.record( diff --git a/sdk/trace/src/test/java/io/opentelemetry/sdk/trace/testbed/errorreporting/ErrorReportingTest.java b/sdk/trace/src/test/java/io/opentelemetry/sdk/trace/testbed/errorreporting/ErrorReportingTest.java index 23af4b4789..9c2681ca2b 100644 --- a/sdk/trace/src/test/java/io/opentelemetry/sdk/trace/testbed/errorreporting/ErrorReportingTest.java +++ b/sdk/trace/src/test/java/io/opentelemetry/sdk/trace/testbed/errorreporting/ErrorReportingTest.java @@ -114,7 +114,6 @@ public final class ErrorReportingTest { void testInstrumentationLayer() { Span span = tracer.spanBuilder("one").startSpan(); try (Scope ignored = span.makeCurrent()) { - // ScopedRunnable captures the active Span at this time. executor.submit( new ScopedRunnable( () -> { @@ -125,8 +124,7 @@ public final class ErrorReportingTest { } finally { Span.current().end(); } - }, - tracer)); + })); } await() @@ -139,13 +137,11 @@ public final class ErrorReportingTest { } private static class ScopedRunnable implements Runnable { - Runnable runnable; - Tracer tracer; - Span span; + private final Runnable runnable; + private final Span span; - private ScopedRunnable(Runnable runnable, Tracer tracer) { + private ScopedRunnable(Runnable runnable) { this.runnable = runnable; - this.tracer = tracer; this.span = Span.current(); }