From c3dedbb64ef8fcb9e4536992c3d2c836320c5c19 Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Tue, 1 Jun 2021 17:41:08 +0900 Subject: [PATCH] Enable all errorprone checks (#3155) * Enable all errorprone checks * Fixes * Finish * Finish * Add flag to disable error prone --- .../e2ebenchmark/E2EAgentBenchmark.java | 4 +- .../io/opentelemetry/perftest/Worker.java | 4 +- .../perftest/jetty/JettyPerftest.java | 8 ++-- .../app/controllers/HomeController.scala | 2 +- .../benchmark/HttpBenchmark.java | 5 +- .../benchmark/InstrumenterBenchmark.java | 3 +- .../benchmark/TypeMatchingBenchmark.java | 2 +- .../io/opentelemetry/benchmark/classes/A.java | 1 + .../io/opentelemetry/benchmark/classes/B.java | 1 + .../io/opentelemetry/benchmark/classes/C.java | 1 + .../io/opentelemetry/benchmark/classes/D.java | 1 + .../io/opentelemetry/benchmark/classes/E.java | 1 + .../io/opentelemetry/benchmark/classes/F.java | 1 + .../benchmark/classes/HttpClass.java | 4 +- build.gradle | 28 +++++++++++ .../bytebuddy/ClasspathByteBuddyPlugin.java | 4 +- .../gradle/muzzle/MuzzlePlugin.java | 12 ++--- .../dependencyManagement.gradle.kts | 2 +- gradle/enforcement/checkstyle.xml | 1 - .../api/caching/CacheBuilder.java | 3 +- .../api/InstrumentationVersion.java | 4 +- .../instrumentation/api/config/Config.java | 12 ++--- .../api/db/RedisCommandSanitizer.java | 2 + .../api/instrumenter/Instrumenter.java | 4 +- .../api/instrumenter/InstrumenterBuilder.java | 7 +-- .../api/internal/SupportabilityMetrics.java | 7 +-- .../api/servlet/AppServerBridge.java | 2 +- .../api/servlet/ServerSpanNaming.java | 4 +- .../api/servlet/ServletContextPath.java | 4 +- .../api/tracer/BaseTracer.java | 4 +- .../async/Jdk8AsyncSpanEndStrategy.java | 2 +- .../src/test/java/AkkaAsyncChild.java | 14 +++--- .../apachecamel/CamelEventNotifier.java | 4 +- .../apachecamel/CamelRoutePolicy.java | 4 +- .../decorators/HttpSpanDecorator.java | 5 +- .../decorators/KafkaSpanDecorator.java | 2 +- .../apachedubbo/v2_7/OpenTelemetryFilter.java | 3 +- .../test/groovy/CommonsHttpClientTest.groovy | 2 +- .../v4_0/HostAndRequestAsHttpUriRequest.java | 8 ++-- .../v1_3/ArmeriaHttpAttributesExtractor.java | 2 +- .../v1_0/AwsLambdaMessageTracer.java | 2 +- .../awslambda/v1_0/AwsLambdaTracer.java | 13 ++--- .../awslambda/v1_0/HeadersFactory.java | 4 +- .../awslambda/v1_0/HttpSpanAttributes.java | 9 ++-- .../v1_0/ParentContextExtractor.java | 4 +- .../v1_0/TracingRequestStreamWrapper.java | 2 +- .../v1_0/TracingRequestWrapperBase.java | 4 +- .../awslambda/v1_0/WrappedLambda.java | 33 +++++++------ ...TracingRequestApiGatewayWrapperTest.groovy | 2 +- .../test/java/TracingRequestHandlerTest.java | 4 +- .../awssdk/v1_11/Aws1ClientTest.groovy | 6 +-- .../groovy/Aws0ClientTest.groovy | 6 +-- .../awssdk/v1_11/TracingRequestHandler.java | 2 +- .../v2_2/AwsJsonProtocolFactoryAccess.java | 2 +- .../awssdk/v2_2/MethodHandleFactory.java | 5 +- .../awssdk/v2_2/Serializer.java | 2 +- .../v2_2/TracingExecutionInterceptor.java | 2 +- .../awssdk/v2_2/FieldMapperTest.java | 6 +-- .../cassandra/v3_0/TracingSession.java | 2 +- .../v2_0/CouchbaseQuerySanitizer.java | 13 ++--- .../src/test/java/JavaAsyncChild.java | 14 +++--- .../ExternalAnnotationInstrumentation.java | 7 ++- .../test/annotation/SayTracedHello.java | 4 +- .../guava/GuavaAsyncSpanEndStrategy.java | 5 +- .../javaagent/src/test/groovy/GwtTest.groovy | 2 +- .../test/gwt/client/GreetingEntryPoint.java | 33 +++++++------ .../test/gwt/server/MessageServiceImpl.java | 5 +- .../java/test/gwt/shared/MessageService.java | 3 +- .../test/gwt/shared/MessageServiceAsync.java | 3 +- .../java/spring/jpa/PersistenceConfig.java | 2 +- .../java/spring/jpa/PersistenceConfig.java | 2 +- .../hibernate/SessionMethodUtils.java | 4 +- .../jaxrsclient/v2_0/CxfClientUtil.java | 3 +- .../jaxrs/v1_0/JaxRsAnnotationsTracer.java | 14 +++--- .../jaxrs/v2_0/JaxRsAnnotationsTracer.java | 14 +++--- .../instrumentation/jdbc/JdbcUtils.java | 3 +- .../test/groovy/test/TestConnection.groovy | 2 +- .../jetty/v11_0/Jetty11HttpServerTracer.java | 4 +- .../jetty/v8_0/Jetty8HttpServerTracer.java | 4 +- .../src/test/groovy/JavaAsyncChild.java | 14 +++--- .../jms/MessageWithDestinationTest.java | 16 ++++++- .../jms/MessagePropertyGetter.java | 2 +- .../jms/MessageWithDestination.java | 3 +- .../kafkaclients/TracingIterator.java | 5 +- .../KubernetesRequestDigest.java | 5 +- .../rx/LettuceFluxTerminationRunnable.java | 4 +- .../liberty/LibertyHttpServerTracer.java | 2 +- .../log4j/v2_13_2/ListAppender.java | 2 +- .../logback/v1_0/LoggingEventWrapper.java | 3 +- .../mongo/v3_1/MongoClientTracer.java | 6 +-- .../netty/v4_1/AttributeKeys.java | 4 +- .../ApplicationOpenTelemetry.java | 2 + .../OpenTelemetryInstrumentation.java | 2 + .../context/AgentContextStorage.java | 7 ++- .../opentelemetryapi/trace/Bridging.java | 7 +-- .../OpenTelemetryMetricsInstrumentation.java | 2 + .../bridge/ApplicationDoubleSumObserver.java | 2 + .../ApplicationDoubleUpDownSumObserver.java | 2 + .../ApplicationDoubleValueObserver.java | 2 + .../bridge/ApplicationLongSumObserver.java | 2 + .../ApplicationLongUpDownSumObserver.java | 2 + .../bridge/ApplicationLongValueObserver.java | 2 + .../bridge/ApplicationMeterProvider.java | 2 + .../oshi/OshiMetricsInstaller.java | 3 +- .../oshi/ProcessMetricsTest.java | 8 +++- .../oshi/SystemMetricsTest.java | 27 ++++++++--- .../play/v2_4/ActionInstrumentation.java | 3 +- .../play/v2_4/RequestCompleteCallback.java | 3 +- .../instrumentation/play/v2_6/PlayTracer.java | 3 +- .../play/v2_6/RequestCompleteCallback.java | 3 +- .../RabbitCommandInstrumentation.java | 3 +- .../rabbitmq/RabbitTracer.java | 11 ++--- .../reactor/TracingOperator.java | 4 +- .../reactor/AbstractReactorCoreTest.groovy | 8 ++-- .../reactornetty/v0_9/DecoratorFunctions.java | 2 +- .../rmi/context/ContextPropagator.java | 4 +- .../rmi/context/server/ContextDispatcher.java | 3 +- .../javaagent/src/test/groovy/RmiTest.groovy | 6 +-- .../src/test/java/rmi/app/Greeter.java | 2 +- .../src/test/java/rmi/app/Server.java | 5 +- .../src/test/java/rmi/app/ServerLegacy.java | 5 +- .../rocketmq/RocketMqConsumerTracer.java | 8 ++-- .../rocketmq/RocketMqProducerTracer.java | 4 +- .../main/java/base/IntegrationTestBase.java | 18 +++---- .../RuntimeMetricsInstaller.java | 3 +- .../java/rx/__OpenTelemetryTracingUtil.java | 4 +- .../rxjava2/RxJava2AsyncSpanEndStrategy.java | 12 ++--- .../rxjava2/TracingAssembly.java | 7 +++ .../rxjava2/AbstractRxJava2Test.groovy | 4 +- .../rxjava2/RxJava2ConcurrencyTestHelper.java | 2 +- .../rxjava3/RxJava3AsyncSpanEndStrategy.java | 12 ++--- .../rxjava3/TracingAssembly.java | 7 +++ .../rxjava3/AbstractRxJava3Test.groovy | 4 +- .../rxjava3/RxJava3ConcurrencyTestHelper.java | 2 +- .../src/test/java/ScalaAsyncChild.java | 14 +++--- .../src/test/scala/ScalaConcurrentTests.scala | 2 +- .../test/java/TestSparkJavaApplication.java | 2 +- .../SpringBatchInstrumentationConfig.java | 6 ++- .../batch/chunk/ChunkExecutionTracer.java | 4 +- .../src/test/groovy/SpringBatchTest.groovy | 2 +- .../src/test/groovy/jsr/TestBatchlet.groovy | 2 +- .../groovy/springbatch/TestTasklet.groovy | 2 +- .../aspects/WithSpanAspectTracer.java | 5 +- .../webclient/WebClientBeanPostProcessor.java | 4 +- .../scheduling/SpringSchedulingTracer.java | 2 +- .../spring/webflux/server/AdviceUtils.java | 5 +- .../server/HandlerAdapterInstrumentation.java | 4 +- .../src/test/groovy/SpringWebfluxTest.groovy | 2 +- .../SpringWebFluxTestApplication.groovy | 4 +- .../test/groovy/server/TestController.groovy | 4 +- .../ControllerSpringWebFluxServerTest.groovy | 2 +- .../HandlerSpringWebFluxServerTest.groovy | 2 +- .../base/SpringWebFluxServerTest.groovy | 2 +- .../server/base/ServerTestController.java | 2 +- .../server/base/ServerTestRouteFactory.java | 2 +- .../instrumentation/twilio/TwilioTracer.java | 12 +++-- .../undertow/UndertowHttpServerTracer.java | 2 +- .../server/VertxRxHttpServerTest.groovy | 2 +- .../src/test/java/VertxReactiveWebServer.java | 21 ++++---- ...VertxRxCircuitBreakerSingleConnection.java | 6 +-- .../vertx/RoutingContextHandlerWrapper.java | 2 +- .../groovy/server/VertxHttpServerTest.groovy | 2 +- .../api/CallDepthThreadLocalMap.java | 4 +- .../api/ClassHierarchyIterable.java | 3 +- .../api/InstrumentationContext.java | 2 +- .../api/Java8BytecodeBridge.java | 2 + .../api/OpenTelemetrySdkAccess.java | 8 ++-- .../api/SafeServiceLoader.java | 6 ++- .../api/concurrent/AdviceUtils.java | 4 +- .../ExecutorInstrumentationUtils.java | 4 +- .../BootstrapPackagePrefixesHolder.java | 12 +++-- .../api/undertow/KeyHolder.java | 4 +- .../javaagent/OpenTelemetryAgent.java | 26 ++++++---- .../javaagent/bootstrap/AgentClassLoader.java | 7 +-- .../javaagent/bootstrap/AgentInitializer.java | 13 +++-- .../javaagent/bootstrap/ExceptionLogger.java | 4 +- .../javaagent/bootstrap/PatchLogger.java | 12 +++-- .../matcher/AgentElementMatchers.java | 8 ++-- .../extension/matcher/ClassLoaderMatcher.java | 3 +- .../extension/matcher/NameMatchers.java | 6 +-- .../matcher/SafeHasSuperTypeMatcher.java | 7 +-- .../extension/muzzle/ClassRefBuilder.java | 4 +- .../InstrumentationModuleTest.groovy | 4 +- .../javaagent/tooling/AgentInstaller.java | 13 +++-- .../javaagent/tooling/AgentTooling.java | 4 +- .../javaagent/tooling/HelperInjector.java | 11 +++-- .../javaagent/tooling/LoggingConfigurer.java | 4 +- .../tooling/TransformSafeLogger.java | 3 +- .../javaagent/tooling/VersionLogger.java | 4 +- .../bytebuddy/AgentCachingPoolStrategy.java | 7 ++- .../tooling/bytebuddy/ExceptionHandlers.java | 8 ++-- .../tooling/context/FieldBackedProvider.java | 39 ++++----------- .../InstrumentationModuleInstaller.java | 2 +- .../GlobalClassloaderIgnoresMatcher.java | 1 - .../tooling/matcher/GlobalIgnoresMatcher.java | 1 - .../muzzle/InstrumentationClassPredicate.java | 2 +- .../muzzle/collector/MuzzleCodeGenerator.java | 48 +++++++++++-------- .../ReferenceCollectingClassVisitor.java | 4 +- .../muzzle/collector/ReferenceCollector.java | 6 +-- .../matcher/HelperReferenceWrapper.java | 14 ++++-- .../matcher/MuzzleGradlePluginUtil.java | 8 ++-- .../javaagent/test/BadAdvice.java | 2 +- .../bytebuddy/matcher/testclasses/A.java | 1 + .../bytebuddy/matcher/testclasses/B.java | 1 + .../bytebuddy/matcher/testclasses/C.java | 1 + .../bytebuddy/matcher/testclasses/D.java | 1 + .../bytebuddy/matcher/testclasses/E.java | 1 + .../bytebuddy/matcher/testclasses/F.java | 1 + .../bytebuddy/matcher/testclasses/G.java | 1 + .../javaagent/IntegrationTestUtils.java | 4 +- .../jvmbootstraptest/AgentLoadedChecker.java | 2 +- .../jvmbootstraptest/LogLevelChecker.java | 2 +- .../MyClassLoaderIsNotBootstrap.java | 3 +- .../loadgenerator/LoadGenerator.java | 4 +- .../matrix/ExceptionRequestListener.java | 4 +- .../smoketest/matrix/ExceptionServlet.java | 2 +- .../matrix/ExceptionRequestListener.java | 4 +- .../smoketest/matrix/ExceptionServlet.java | 2 +- .../windows/ContainerLogFrameConsumer.java | 2 +- .../windows/Slf4jDockerLogLineListener.java | 1 - .../windows/WindowsTestContainerManager.java | 39 ++++++++------- .../test/groovy/AgentTestRunnerTest.groovy | 2 +- .../test/utils/ClasspathUtils.java | 4 +- .../test/utils/ExceptionUtils.java | 4 +- .../test/utils/LoggerUtils.java | 4 +- .../test/utils/OkHttpUtils.java | 4 +- .../test/utils/PortAllocator.java | 2 +- .../instrumentation/test/utils/PortUtils.java | 16 ++++--- .../common/AgentClassLoaderAccess.java | 6 +-- .../common/AgentTestingExporterAccess.java | 14 +++--- .../testing/common/Java8BytecodeBridge.java | 2 + .../common/TestAgentListenerAccess.java | 19 +++++--- .../instrumentation/TestHelperClasses.java | 2 +- .../test/utils/PortAllocatorTest.java | 15 ++---- .../HelperReferenceWrapperTestClasses.java | 2 +- .../src/test/java/muzzle/TestClasses.java | 3 +- .../exporter/OtlpInMemoryMetricExporter.java | 2 +- .../exporter/OtlpInMemorySpanExporter.java | 2 +- 238 files changed, 783 insertions(+), 566 deletions(-) diff --git a/benchmark-e2e/src/main/java/io/opentelemetry/e2ebenchmark/E2EAgentBenchmark.java b/benchmark-e2e/src/main/java/io/opentelemetry/e2ebenchmark/E2EAgentBenchmark.java index ff1472542b..078f7ad7d0 100644 --- a/benchmark-e2e/src/main/java/io/opentelemetry/e2ebenchmark/E2EAgentBenchmark.java +++ b/benchmark-e2e/src/main/java/io/opentelemetry/e2ebenchmark/E2EAgentBenchmark.java @@ -51,11 +51,11 @@ public class E2EAgentBenchmark { } @Test - void run() throws Exception { + void run() throws InterruptedException { runBenchmark(); } - private void runBenchmark() throws Exception { + private void runBenchmark() throws InterruptedException { String agentPath = System.getProperty("io.opentelemetry.smoketest.agent.shadowJar.path"); // otlp collector container diff --git a/benchmark-integration/jetty-perftest/src/main/java/io/opentelemetry/perftest/Worker.java b/benchmark-integration/jetty-perftest/src/main/java/io/opentelemetry/perftest/Worker.java index 8613d78a74..48ae33ef6f 100644 --- a/benchmark-integration/jetty-perftest/src/main/java/io/opentelemetry/perftest/Worker.java +++ b/benchmark-integration/jetty-perftest/src/main/java/io/opentelemetry/perftest/Worker.java @@ -11,7 +11,7 @@ import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.context.Scope; import java.util.concurrent.TimeUnit; -public class Worker { +public final class Worker { private static final Tracer tracer = GlobalOpenTelemetry.getTracer("test"); @@ -32,4 +32,6 @@ public class Worker { span.end(); } } + + private Worker() {} } diff --git a/benchmark-integration/jetty-perftest/src/main/java/io/opentelemetry/perftest/jetty/JettyPerftest.java b/benchmark-integration/jetty-perftest/src/main/java/io/opentelemetry/perftest/jetty/JettyPerftest.java index cb56a6a195..a816d6fd92 100644 --- a/benchmark-integration/jetty-perftest/src/main/java/io/opentelemetry/perftest/jetty/JettyPerftest.java +++ b/benchmark-integration/jetty-perftest/src/main/java/io/opentelemetry/perftest/jetty/JettyPerftest.java @@ -18,7 +18,7 @@ import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; -public class JettyPerftest { +public final class JettyPerftest { private static final int PORT = 8080; private static final String PATH = "/work"; @@ -53,7 +53,7 @@ public class JettyPerftest { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { if (request.getParameter("error") != null) { - throw new RuntimeException("some sync error"); + throw new IllegalStateException("some sync error"); } String workVal = request.getParameter("workTimeMillis"); long workTimeMillis = 0L; @@ -64,7 +64,7 @@ public class JettyPerftest { response.getWriter().print("Did " + workTimeMillis + "ms of work."); } - private void scheduleWork(long workTimeMillis) { + private static void scheduleWork(long workTimeMillis) { Span span = tracer.spanBuilder("work").startSpan(); try (Scope scope = span.makeCurrent()) { if (span != null) { @@ -79,4 +79,6 @@ public class JettyPerftest { } } } + + private JettyPerftest() {} } diff --git a/benchmark-integration/play-perftest/app/controllers/HomeController.scala b/benchmark-integration/play-perftest/app/controllers/HomeController.scala index e3e4ae58bc..48e65c3aab 100644 --- a/benchmark-integration/play-perftest/app/controllers/HomeController.scala +++ b/benchmark-integration/play-perftest/app/controllers/HomeController.scala @@ -29,7 +29,7 @@ class HomeController @Inject()(cc: ControllerComponents) extends AbstractControl def doGet(workTimeMillis: Option[Long], error: Option[String]) = Action { implicit request: Request[AnyContent] => error match { - case Some(x) => throw new RuntimeException("some sync error") + case Some(x) => throw new IllegalStateException("some sync error") case None => { var workTime = workTimeMillis.getOrElse(0L) scheduleWork(workTime) diff --git a/benchmark/src/jmh/java/io/opentelemetry/benchmark/HttpBenchmark.java b/benchmark/src/jmh/java/io/opentelemetry/benchmark/HttpBenchmark.java index e766196f53..c966f813cc 100644 --- a/benchmark/src/jmh/java/io/opentelemetry/benchmark/HttpBenchmark.java +++ b/benchmark/src/jmh/java/io/opentelemetry/benchmark/HttpBenchmark.java @@ -34,8 +34,11 @@ public class HttpBenchmark { while (!AbstractLifeCycle.STARTED.equals(jettyServer.getState())) { Thread.sleep(500); } + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new IllegalStateException(e); } catch (Exception e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } } diff --git a/benchmark/src/jmh/java/io/opentelemetry/benchmark/InstrumenterBenchmark.java b/benchmark/src/jmh/java/io/opentelemetry/benchmark/InstrumenterBenchmark.java index 5dae8dac3f..7c48cd0b4a 100644 --- a/benchmark/src/jmh/java/io/opentelemetry/benchmark/InstrumenterBenchmark.java +++ b/benchmark/src/jmh/java/io/opentelemetry/benchmark/InstrumenterBenchmark.java @@ -55,7 +55,8 @@ public class InstrumenterBenchmark { } static class ConstantHttpAttributesExtractor extends HttpAttributesExtractor { - static HttpAttributesExtractor INSTANCE = new ConstantHttpAttributesExtractor(); + static final HttpAttributesExtractor INSTANCE = + new ConstantHttpAttributesExtractor(); @Override protected @Nullable String method(Void unused) { diff --git a/benchmark/src/jmh/java/io/opentelemetry/benchmark/TypeMatchingBenchmark.java b/benchmark/src/jmh/java/io/opentelemetry/benchmark/TypeMatchingBenchmark.java index 6fd1ba87fe..91b6cc49f8 100644 --- a/benchmark/src/jmh/java/io/opentelemetry/benchmark/TypeMatchingBenchmark.java +++ b/benchmark/src/jmh/java/io/opentelemetry/benchmark/TypeMatchingBenchmark.java @@ -50,7 +50,7 @@ public class TypeMatchingBenchmark { } } } catch (IOException e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } } } diff --git a/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/A.java b/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/A.java index d6839843c3..b5c79c9bb3 100644 --- a/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/A.java +++ b/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/A.java @@ -5,6 +5,7 @@ package io.opentelemetry.benchmark.classes; +@SuppressWarnings("ClassNamedLikeTypeParameter") public interface A { void a(); } diff --git a/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/B.java b/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/B.java index 09ddc8982a..f5701e4c35 100644 --- a/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/B.java +++ b/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/B.java @@ -5,6 +5,7 @@ package io.opentelemetry.benchmark.classes; +@SuppressWarnings("ClassNamedLikeTypeParameter") public interface B extends A { void b(); } diff --git a/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/C.java b/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/C.java index fcea86d1a7..eb80f723e2 100644 --- a/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/C.java +++ b/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/C.java @@ -5,6 +5,7 @@ package io.opentelemetry.benchmark.classes; +@SuppressWarnings("ClassNamedLikeTypeParameter") public interface C extends A, B { void c(); } diff --git a/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/D.java b/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/D.java index f10767bd02..14d6d32ac5 100644 --- a/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/D.java +++ b/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/D.java @@ -5,6 +5,7 @@ package io.opentelemetry.benchmark.classes; +@SuppressWarnings("ClassNamedLikeTypeParameter") public interface D extends A, B, C { void d(); } diff --git a/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/E.java b/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/E.java index aac14d396f..ec2915cdfc 100644 --- a/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/E.java +++ b/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/E.java @@ -5,6 +5,7 @@ package io.opentelemetry.benchmark.classes; +@SuppressWarnings("ClassNamedLikeTypeParameter") public interface E extends B, C, D { void e(); } diff --git a/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/F.java b/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/F.java index 4be54768f1..f7a720e2c1 100644 --- a/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/F.java +++ b/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/F.java @@ -5,6 +5,7 @@ package io.opentelemetry.benchmark.classes; +@SuppressWarnings("ClassNamedLikeTypeParameter") public abstract class F implements E { public abstract void f(); diff --git a/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/HttpClass.java b/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/HttpClass.java index 8410704840..bf5800ccf0 100644 --- a/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/HttpClass.java +++ b/benchmark/src/jmh/java/io/opentelemetry/benchmark/classes/HttpClass.java @@ -19,8 +19,8 @@ import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; public class HttpClass { - private final String contextPath = "/path"; - private final Integer port = 18888; + private static final String contextPath = "/path"; + private static final Integer port = 18888; public Server buildJettyServer() { System.setProperty("org.eclipse.jetty.util.log.class", "org.eclipse.jetty.util.log.StdErrLog"); diff --git a/build.gradle b/build.gradle index 532ff7fd48..4f2af388e6 100644 --- a/build.gradle +++ b/build.gradle @@ -79,7 +79,10 @@ allprojects { tasks.withType(JavaCompile).configureEach { options.errorprone { + enabled = rootProject.findProperty("disableErrorProne") != "true" disableWarningsInGeneratedCode = true + allDisabledChecksAsWarnings = true + excludedPaths = ".*/build/generated/.*" // Doesn't work well with Java 8 @@ -89,6 +92,15 @@ allprojects { disable("AutoValueImmutableFields") disable("StringSplitter") + // Don't currently use this (to indicate a local variable that's mutated) but could + // consider for future. + disable("Var") + + // Don't support Android without desugar + disable("AndroidJdkLibsChecker") + disable("Java7ApiChecker") + disable("StaticOrDefaultInterfaceMethod") + // Great check, but for bytecode manipulation it's too common to separate over // onEnter / onExit // TODO(anuraaga): Only disable for auto instrumentation project. @@ -101,6 +113,9 @@ allprojects { // We end up using obsolete types if a library we're instrumenting uses them. disable("JdkObsolete") + // Limits API possibilities + disable("NoFunctionalReturnType") + // Storing into a variable in onEnter triggers this unfortunately. // TODO(anuraaga): Only disable for auto instrumentation project. disable("UnusedVariable") @@ -108,6 +123,19 @@ allprojects { // TODO(anuraaga): Remove this, we use this pattern in several tests and it will mean // some moving. disable("DefaultPackage") + + // TODO(anuraaga): Remove this, all our advice classes miss constructors but probably should + // address this. + disable("PrivateConstructorForUtilityClass") + + // TODO(anuraaga): Remove this, probably after instrumenter API migration instead of dealing + // with older APIs. + disable("InconsistentOverloads") + disable("TypeParameterNaming") + + if (name.contains("Jmh") || name.contains("Test")) { + disable("FieldMissingNullable") + } } } } diff --git a/buildSrc/src/main/java/io/opentelemetry/instrumentation/gradle/bytebuddy/ClasspathByteBuddyPlugin.java b/buildSrc/src/main/java/io/opentelemetry/instrumentation/gradle/bytebuddy/ClasspathByteBuddyPlugin.java index 88ac195838..e211a59e81 100644 --- a/buildSrc/src/main/java/io/opentelemetry/instrumentation/gradle/bytebuddy/ClasspathByteBuddyPlugin.java +++ b/buildSrc/src/main/java/io/opentelemetry/instrumentation/gradle/bytebuddy/ClasspathByteBuddyPlugin.java @@ -64,7 +64,7 @@ public class ClasspathByteBuddyPlugin implements Plugin { Class clazz = Class.forName(className, false, classLoader); return (Plugin) clazz.getDeclaredConstructor().newInstance(); } catch (Exception e) { - throw new RuntimeException("Failed to create ByteBuddy plugin instance", e); + throw new IllegalStateException("Failed to create ByteBuddy plugin instance", e); } } @@ -84,7 +84,7 @@ public class ClasspathByteBuddyPlugin implements Plugin { try { return file.toURI().toURL(); } catch (MalformedURLException e) { - throw new RuntimeException("Cannot resolve " + file + " as URL", e); + throw new IllegalStateException("Cannot resolve " + file + " as URL", e); } } } diff --git a/buildSrc/src/main/java/io/opentelemetry/instrumentation/gradle/muzzle/MuzzlePlugin.java b/buildSrc/src/main/java/io/opentelemetry/instrumentation/gradle/muzzle/MuzzlePlugin.java index 2228c2c996..8fc0823adb 100644 --- a/buildSrc/src/main/java/io/opentelemetry/instrumentation/gradle/muzzle/MuzzlePlugin.java +++ b/buildSrc/src/main/java/io/opentelemetry/instrumentation/gradle/muzzle/MuzzlePlugin.java @@ -105,7 +105,7 @@ public class MuzzlePlugin implements Plugin { .getMethod("printMuzzleReferences", ClassLoader.class); assertionMethod.invoke(null, instrumentationCL); } catch (Exception e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } }); }); @@ -191,7 +191,7 @@ public class MuzzlePlugin implements Plugin { try { return file.toURI().toURL(); } catch (MalformedURLException e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } }) .toArray(URL[]::new); @@ -305,7 +305,7 @@ public class MuzzlePlugin implements Plugin { userCL, muzzleDirective.getAssertPass().get()); } catch (Exception e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } finally { Thread.currentThread().setContextClassLoader(ccl); } @@ -366,7 +366,7 @@ public class MuzzlePlugin implements Plugin { try { rangeResult = system.resolveVersionRange(session, rangeRequest); } catch (VersionRangeResolutionException e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } Set allVersionArtifacts = @@ -426,7 +426,7 @@ public class MuzzlePlugin implements Plugin { try { allRangeResult = system.resolveVersionRange(session, allRangeRequest); } catch (VersionRangeResolutionException e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } VersionRangeRequest rangeRequest = new VersionRangeRequest(); @@ -436,7 +436,7 @@ public class MuzzlePlugin implements Plugin { try { rangeResult = system.resolveVersionRange(session, rangeRequest); } catch (VersionRangeResolutionException e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } allRangeResult.getVersions().removeAll(rangeResult.getVersions()); diff --git a/dependencyManagement/dependencyManagement.gradle.kts b/dependencyManagement/dependencyManagement.gradle.kts index ddabb678ba..9cb4f0b5c5 100644 --- a/dependencyManagement/dependencyManagement.gradle.kts +++ b/dependencyManagement/dependencyManagement.gradle.kts @@ -84,7 +84,7 @@ val DEPENDENCIES = listOf( "info.solidsoft.spock:spock-global-unroll:0.5.1", "org.assertj:assertj-core:3.19.0", "org.awaitility:awaitility:4.0.3", - "org.checkerframework:checker-qual:3.6.1", + "org.checkerframework:checker-qual:3.13.0", "org.codehaus.groovy:groovy-all:${groovyVersion}", "org.objenesis:objenesis:3.1", "org.spockframework:spock-core:1.3-groovy-2.5", diff --git a/gradle/enforcement/checkstyle.xml b/gradle/enforcement/checkstyle.xml index 5ded2fdf20..4a532b0ba2 100644 --- a/gradle/enforcement/checkstyle.xml +++ b/gradle/enforcement/checkstyle.xml @@ -133,7 +133,6 @@ - diff --git a/instrumentation-api-caching/src/main/java/io/opentelemetry/instrumentation/api/caching/CacheBuilder.java b/instrumentation-api-caching/src/main/java/io/opentelemetry/instrumentation/api/caching/CacheBuilder.java index 406b5ec33b..109361bef5 100644 --- a/instrumentation-api-caching/src/main/java/io/opentelemetry/instrumentation/api/caching/CacheBuilder.java +++ b/instrumentation-api-caching/src/main/java/io/opentelemetry/instrumentation/api/caching/CacheBuilder.java @@ -7,6 +7,7 @@ package io.opentelemetry.instrumentation.api.caching; import com.github.benmanes.caffeine.cache.Caffeine; import java.util.concurrent.Executor; +import org.checkerframework.checker.nullness.qual.Nullable; /** A builder of {@link Cache}. */ public final class CacheBuilder { @@ -16,7 +17,7 @@ public final class CacheBuilder { private boolean weakKeys; private boolean weakValues; private long maximumSize = UNSET; - private Executor executor = null; + @Nullable private Executor executor = null; /** Sets the maximum size of the cache. */ public CacheBuilder setMaximumSize(long maximumSize) { diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/InstrumentationVersion.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/InstrumentationVersion.java index 8082f60c7a..4b539b335f 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/InstrumentationVersion.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/InstrumentationVersion.java @@ -5,7 +5,9 @@ package io.opentelemetry.instrumentation.api; -public class InstrumentationVersion { +public final class InstrumentationVersion { public static final String VERSION = InstrumentationVersion.class.getPackage().getImplementationVersion(); + + private InstrumentationVersion() {} } diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/config/Config.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/config/Config.java index 726272bb1e..ff0249a6d4 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/config/Config.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/config/Config.java @@ -23,7 +23,7 @@ public abstract class Config { // lazy initialized, so that javaagent can set it, and library instrumentation can fall back and // read system properties - private static volatile Config INSTANCE = null; + @Nullable private static volatile Config instance = null; /** * Sets the agent configuration singleton. This method is only supposed to be called once, from @@ -31,21 +31,21 @@ public abstract class Config { * Config#get()} is used for the first time). */ public static void internalInitializeConfig(Config config) { - if (INSTANCE != null) { + if (instance != null) { log.warn("Config#INSTANCE was already set earlier"); return; } - INSTANCE = requireNonNull(config); + instance = requireNonNull(config); } public static Config get() { - if (INSTANCE == null) { + if (instance == null) { // this should only happen in library instrumentation // // no need to synchronize because worst case is creating INSTANCE more than once - INSTANCE = new ConfigBuilder().readEnvironmentVariables().readSystemProperties().build(); + instance = new ConfigBuilder().readEnvironmentVariables().readSystemProperties().build(); } - return INSTANCE; + return instance; } public static Config create(Map allProperties) { diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/db/RedisCommandSanitizer.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/db/RedisCommandSanitizer.java index bca342ca52..1f59f804b9 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/db/RedisCommandSanitizer.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/db/RedisCommandSanitizer.java @@ -423,4 +423,6 @@ public final class RedisCommandSanitizer { } } } + + private RedisCommandSanitizer() {} } diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/Instrumenter.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/Instrumenter.java index 0b99aff167..34da549985 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/Instrumenter.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/Instrumenter.java @@ -58,8 +58,8 @@ public class Instrumenter { private final List> extractors; private final List requestListeners; private final ErrorCauseExtractor errorCauseExtractor; - private final StartTimeExtractor startTimeExtractor; - private final EndTimeExtractor endTimeExtractor; + @Nullable private final StartTimeExtractor startTimeExtractor; + @Nullable private final EndTimeExtractor endTimeExtractor; Instrumenter(InstrumenterBuilder builder) { this.instrumentationName = builder.instrumentationName; diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBuilder.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBuilder.java index 9d2a4e0b4e..60d502cf01 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBuilder.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBuilder.java @@ -17,6 +17,7 @@ import io.opentelemetry.instrumentation.api.annotations.UnstableApi; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import org.checkerframework.checker.nullness.qual.Nullable; /** * A builder of {@link Instrumenter}. Instrumentation libraries should generally expose their own @@ -34,12 +35,12 @@ public final class InstrumenterBuilder { new ArrayList<>(); final List requestListeners = new ArrayList<>(); - SpanKindExtractor spanKindExtractor = null; + SpanKindExtractor spanKindExtractor = SpanKindExtractor.alwaysInternal(); SpanStatusExtractor spanStatusExtractor = SpanStatusExtractor.getDefault(); ErrorCauseExtractor errorCauseExtractor = ErrorCauseExtractor.jdk(); - StartTimeExtractor startTimeExtractor = null; - EndTimeExtractor endTimeExtractor = null; + @Nullable StartTimeExtractor startTimeExtractor = null; + @Nullable EndTimeExtractor endTimeExtractor = null; InstrumenterBuilder( OpenTelemetry openTelemetry, diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/SupportabilityMetrics.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/SupportabilityMetrics.java index 8b84a190a2..26c424c1c1 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/SupportabilityMetrics.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/SupportabilityMetrics.java @@ -123,9 +123,6 @@ public final class SupportabilityMetrics { case CONSUMER: consumer.increment(); break; - default: - // in case a new kind gets added, we don't want to fail. - break; } } @@ -141,10 +138,8 @@ public final class SupportabilityMetrics { return producer.sumThenReset(); case CONSUMER: return consumer.sumThenReset(); - default: - // in case a new kind gets added, we don't want to fail. - return 0; } + return 0; } } } diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/servlet/AppServerBridge.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/servlet/AppServerBridge.java index be4726a2bc..95a8b986d4 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/servlet/AppServerBridge.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/servlet/AppServerBridge.java @@ -24,7 +24,7 @@ public class AppServerBridge { * @return new context with AppServerBridge attached. */ public static Context init(Context ctx) { - return init(ctx, true); + return init(ctx, /* shouldRecordException= */ true); } /** diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/servlet/ServerSpanNaming.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/servlet/ServerSpanNaming.java index dddb1c4d9e..0ccf9623e7 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/servlet/ServerSpanNaming.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/servlet/ServerSpanNaming.java @@ -98,7 +98,7 @@ public final class ServerSpanNaming { CONTAINER(1), // for servlet filters we try to find the best name which isn't necessarily from the first // filter that is called - FILTER(2, false), + FILTER(2, /* useFirst= */ false), SERVLET(3), CONTROLLER(4); @@ -106,7 +106,7 @@ public final class ServerSpanNaming { private final boolean useFirst; Source(int order) { - this(order, true); + this(order, /* useFirst= */ true); } Source(int order, boolean useFirst) { diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/servlet/ServletContextPath.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/servlet/ServletContextPath.java index d400349334..7af5f2cbdb 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/servlet/ServletContextPath.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/servlet/ServletContextPath.java @@ -18,7 +18,7 @@ import io.opentelemetry.context.ContextKey; * the context key, since otherwise instrumentation across different class loaders would use * different context keys and not be able to share the servlet context path. */ -public class ServletContextPath { +public final class ServletContextPath { // Keeps track of the servlet context path that needs to be prepended to the route when updating // the span name @@ -34,4 +34,6 @@ public class ServletContextPath { return spanName; } } + + private ServletContextPath() {} } diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/tracer/BaseTracer.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/tracer/BaseTracer.java index 48278908b7..6479590769 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/tracer/BaseTracer.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/tracer/BaseTracer.java @@ -120,11 +120,11 @@ public abstract class BaseTracer { return !suppressed; } - private boolean inClientSpan(Context context) { + private static boolean inClientSpan(Context context) { return ClientSpan.fromContextOrNull(context) != null; } - private boolean inServerSpan(Context context) { + private static boolean inServerSpan(Context context) { return ServerSpan.fromContextOrNull(context) != null; } diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/tracer/async/Jdk8AsyncSpanEndStrategy.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/tracer/async/Jdk8AsyncSpanEndStrategy.java index a363618ede..74789f3021 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/tracer/async/Jdk8AsyncSpanEndStrategy.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/tracer/async/Jdk8AsyncSpanEndStrategy.java @@ -36,7 +36,7 @@ enum Jdk8AsyncSpanEndStrategy implements AsyncSpanEndStrategy { * synchronously ends the span to avoid additional allocations and overhead registering for * notification of completion. */ - private boolean endSynchronously( + private static boolean endSynchronously( CompletableFuture future, BaseTracer tracer, Context context) { if (!future.isDone()) { diff --git a/instrumentation/akka-actor-2.5/javaagent/src/test/java/AkkaAsyncChild.java b/instrumentation/akka-actor-2.5/javaagent/src/test/java/AkkaAsyncChild.java index 3bcf3099b8..81b0f5ce08 100644 --- a/instrumentation/akka-actor-2.5/javaagent/src/test/java/AkkaAsyncChild.java +++ b/instrumentation/akka-actor-2.5/javaagent/src/test/java/AkkaAsyncChild.java @@ -18,7 +18,12 @@ public class AkkaAsyncChild extends ForkJoinTask implements Runnable, Callable { private final CountDownLatch latch = new CountDownLatch(1); public AkkaAsyncChild() { - this(true, false); + this(/* doTraceableWork= */ true, /* blockThread= */ false); + } + + public AkkaAsyncChild(boolean doTraceableWork, boolean blockThread) { + this.doTraceableWork = doTraceableWork; + this.blockThread = new AtomicBoolean(blockThread); } @Override @@ -35,11 +40,6 @@ public class AkkaAsyncChild extends ForkJoinTask implements Runnable, Callable { return true; } - public AkkaAsyncChild(boolean doTraceableWork, boolean blockThread) { - this.doTraceableWork = doTraceableWork; - this.blockThread = new AtomicBoolean(blockThread); - } - public void unblock() { blockThread.set(false); } @@ -69,7 +69,7 @@ public class AkkaAsyncChild extends ForkJoinTask implements Runnable, Callable { latch.countDown(); } - private void asyncChild() { + private static void asyncChild() { tracer.spanBuilder("asyncChild").startSpan().end(); } } diff --git a/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/CamelEventNotifier.java b/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/CamelEventNotifier.java index 68604d99b2..ca3203d884 100644 --- a/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/CamelEventNotifier.java +++ b/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/CamelEventNotifier.java @@ -51,7 +51,7 @@ final class CamelEventNotifier extends EventNotifierSupport { } /** Camel about to send (outbound). */ - private void onExchangeSending(ExchangeSendingEvent ese) { + private static void onExchangeSending(ExchangeSendingEvent ese) { SpanDecorator sd = CamelTracer.TRACER.getSpanDecorator(ese.getEndpoint()); if (!sd.shouldStartNewSpan()) { return; @@ -69,7 +69,7 @@ final class CamelEventNotifier extends EventNotifierSupport { } /** Camel finished sending (outbound). Finish span and remove it from CAMEL holder. */ - private void onExchangeSent(ExchangeSentEvent event) { + private static void onExchangeSent(ExchangeSentEvent event) { ExchangeSentEvent ese = event; SpanDecorator sd = CamelTracer.TRACER.getSpanDecorator(ese.getEndpoint()); if (!sd.shouldStartNewSpan()) { diff --git a/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/CamelRoutePolicy.java b/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/CamelRoutePolicy.java index aae986e0a0..f60ddeee14 100644 --- a/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/CamelRoutePolicy.java +++ b/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/CamelRoutePolicy.java @@ -36,7 +36,7 @@ final class CamelRoutePolicy extends RoutePolicySupport { private static final Logger LOG = LoggerFactory.getLogger(CamelRoutePolicy.class); - private Span spanOnExchangeBegin( + private static Span spanOnExchangeBegin( Route route, Exchange exchange, SpanDecorator sd, Context parentContext, SpanKind spanKind) { Span activeSpan = Span.fromContext(parentContext); if (!activeSpan.getSpanContext().isValid()) { @@ -49,7 +49,7 @@ final class CamelRoutePolicy extends RoutePolicySupport { return Span.fromContext(context); } - private SpanKind spanKind(Context context, SpanDecorator sd) { + private static SpanKind spanKind(Context context, SpanDecorator sd) { Span activeSpan = Span.fromContext(context); // if there's an active span, this is not a root span which we always mark as INTERNAL return (activeSpan.getSpanContext().isValid() ? SpanKind.INTERNAL : sd.getReceiverSpanKind()); diff --git a/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/HttpSpanDecorator.java b/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/HttpSpanDecorator.java index e2f7a7d2cb..d349eaec0d 100644 --- a/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/HttpSpanDecorator.java +++ b/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/HttpSpanDecorator.java @@ -93,7 +93,7 @@ class HttpSpanDecorator extends BaseSpanDecorator { } } - private boolean shouldSetPathAsName(CamelDirection camelDirection) { + private static boolean shouldSetPathAsName(CamelDirection camelDirection) { return CamelDirection.INBOUND.equals(camelDirection); } @@ -109,7 +109,8 @@ class HttpSpanDecorator extends BaseSpanDecorator { } } - private boolean shouldUpdateServerSpanName(Span serverSpan, CamelDirection camelDirection) { + private static boolean shouldUpdateServerSpanName( + Span serverSpan, CamelDirection camelDirection) { return (serverSpan != null && shouldSetPathAsName(camelDirection)); } diff --git a/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/KafkaSpanDecorator.java b/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/KafkaSpanDecorator.java index 97109067b3..bafb64a187 100644 --- a/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/KafkaSpanDecorator.java +++ b/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/KafkaSpanDecorator.java @@ -89,7 +89,7 @@ class KafkaSpanDecorator extends MessagingSpanDecorator { * @param header the header name * @param type the class type of the exchange header */ - private String getValue(final Exchange exchange, final String header, Class type) { + private static String getValue(final Exchange exchange, final String header, Class type) { T value = exchange.getIn().getHeader(header, type); return value != null ? String.valueOf(value) : exchange.getIn().getHeader(header, String.class); } diff --git a/instrumentation/apache-dubbo/apache-dubbo-2.7/library/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/OpenTelemetryFilter.java b/instrumentation/apache-dubbo/apache-dubbo-2.7/library/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/OpenTelemetryFilter.java index 598e2ce65e..4b926ac5e1 100644 --- a/instrumentation/apache-dubbo/apache-dubbo-2.7/library/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/OpenTelemetryFilter.java +++ b/instrumentation/apache-dubbo/apache-dubbo-2.7/library/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/OpenTelemetryFilter.java @@ -18,7 +18,6 @@ import org.apache.dubbo.rpc.Invocation; import org.apache.dubbo.rpc.Invoker; import org.apache.dubbo.rpc.Result; import org.apache.dubbo.rpc.RpcContext; -import org.apache.dubbo.rpc.RpcException; import org.apache.dubbo.rpc.RpcInvocation; @Activate(group = {"consumer", "provider"}) @@ -30,7 +29,7 @@ public class OpenTelemetryFilter implements Filter { } @Override - public Result invoke(Invoker invoker, Invocation invocation) throws RpcException { + public Result invoke(Invoker invoker, Invocation invocation) { if (!(invocation instanceof RpcInvocation)) { return invoker.invoke(invocation); } diff --git a/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/test/groovy/CommonsHttpClientTest.groovy b/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/test/groovy/CommonsHttpClientTest.groovy index a7f3248378..3476b631c0 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/test/groovy/CommonsHttpClientTest.groovy +++ b/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/test/groovy/CommonsHttpClientTest.groovy @@ -57,7 +57,7 @@ class CommonsHttpClientTest extends HttpClientTest implements AgentT request = new TraceMethod(uri.toString()) break default: - throw new RuntimeException("Unsupported method: " + method) + throw new IllegalStateException("Unsupported method: " + method) } headers.each { request.setRequestHeader(it.key, it.value) } return request diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/HostAndRequestAsHttpUriRequest.java b/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/HostAndRequestAsHttpUriRequest.java index 76ff3ad345..b5a2daa487 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/HostAndRequestAsHttpUriRequest.java +++ b/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/HostAndRequestAsHttpUriRequest.java @@ -13,6 +13,7 @@ import org.apache.http.ProtocolVersion; import org.apache.http.RequestLine; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.message.AbstractHttpMessage; +import org.checkerframework.checker.nullness.qual.Nullable; /** Wraps HttpHost and HttpRequest into a HttpUriRequest for tracers and injectors. */ public final class HostAndRequestAsHttpUriRequest extends AbstractHttpMessage @@ -21,12 +22,11 @@ public final class HostAndRequestAsHttpUriRequest extends AbstractHttpMessage private final String method; private final RequestLine requestLine; private final ProtocolVersion protocolVersion; - private final java.net.URI uri; + @Nullable private final URI uri; private final HttpRequest actualRequest; public HostAndRequestAsHttpUriRequest(HttpHost httpHost, HttpRequest httpRequest) { - method = httpRequest.getRequestLine().getMethod(); requestLine = httpRequest.getRequestLine(); protocolVersion = requestLine.getProtocolVersion(); @@ -42,7 +42,7 @@ public final class HostAndRequestAsHttpUriRequest extends AbstractHttpMessage } @Override - public void abort() throws UnsupportedOperationException { + public void abort() { throw new UnsupportedOperationException(); } @@ -72,7 +72,7 @@ public final class HostAndRequestAsHttpUriRequest extends AbstractHttpMessage } @Override - public java.net.URI getURI() { + public URI getURI() { return uri; } } diff --git a/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpAttributesExtractor.java b/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpAttributesExtractor.java index 21e7ac08af..6e932e8ba8 100644 --- a/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpAttributesExtractor.java +++ b/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpAttributesExtractor.java @@ -123,7 +123,7 @@ final class ArmeriaHttpAttributesExtractor return null; } - private HttpRequest request(RequestContext ctx) { + private static HttpRequest request(RequestContext ctx) { HttpRequest request = ctx.request(); if (request == null) { throw new IllegalStateException( diff --git a/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/AwsLambdaMessageTracer.java b/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/AwsLambdaMessageTracer.java index f6de3a25b1..75ec49e5ff 100644 --- a/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/AwsLambdaMessageTracer.java +++ b/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/AwsLambdaMessageTracer.java @@ -67,7 +67,7 @@ public class AwsLambdaMessageTracer extends BaseTracer { return parentContext.with(span.startSpan()); } - private void addLinkToMessageParent(SQSMessage message, SpanBuilder span) { + private static void addLinkToMessageParent(SQSMessage message, SpanBuilder span) { String parentHeader = message.getAttributes().get(AWS_TRACE_HEADER_SQS_ATTRIBUTE_KEY); if (parentHeader != null) { SpanContext parentCtx = diff --git a/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/AwsLambdaTracer.java b/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/AwsLambdaTracer.java index a1e0fdbd1d..e85015a5f0 100644 --- a/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/AwsLambdaTracer.java +++ b/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/AwsLambdaTracer.java @@ -26,9 +26,11 @@ import java.util.Collections; import java.util.Map; import org.checkerframework.checker.nullness.qual.Nullable; +// Context is defined in both OTel and Lambda +@SuppressWarnings("ParameterPackage") public class AwsLambdaTracer extends BaseTracer { - private static final MethodHandle GET_FUNCTION_ARN; + @Nullable private static final MethodHandle GET_FUNCTION_ARN; static { MethodHandles.Lookup lookup = MethodHandles.publicLookup(); @@ -43,7 +45,6 @@ public class AwsLambdaTracer extends BaseTracer { GET_FUNCTION_ARN = getFunctionArn; } - private final HttpSpanAttributes httpSpanAttributes = new HttpSpanAttributes(); // cached accountId value private volatile String accountId; @@ -55,7 +56,7 @@ public class AwsLambdaTracer extends BaseTracer { setCommonAttributes(span, context); if (input instanceof APIGatewayProxyRequestEvent) { span.setAttribute(FAAS_TRIGGER, FaasTriggerValues.HTTP); - httpSpanAttributes.onRequest(span, (APIGatewayProxyRequestEvent) input); + HttpSpanAttributes.onRequest(span, (APIGatewayProxyRequestEvent) input); } } @@ -72,7 +73,7 @@ public class AwsLambdaTracer extends BaseTracer { } @Nullable - private String getFunctionArn(Context context) { + private static String getFunctionArn(Context context) { if (GET_FUNCTION_ARN == null) { return null; } @@ -101,7 +102,7 @@ public class AwsLambdaTracer extends BaseTracer { return accountId; } - private String spanName(Context context, Object input) { + private static String spanName(Context context, Object input) { String name = null; if (input instanceof APIGatewayProxyRequestEvent) { name = ((APIGatewayProxyRequestEvent) input).getResource(); @@ -126,7 +127,7 @@ public class AwsLambdaTracer extends BaseTracer { public void onOutput(io.opentelemetry.context.Context context, Object output) { if (output instanceof APIGatewayProxyResponseEvent) { - httpSpanAttributes.onResponse( + HttpSpanAttributes.onResponse( Span.fromContext(context), (APIGatewayProxyResponseEvent) output); } } diff --git a/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/HeadersFactory.java b/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/HeadersFactory.java index 5f9f2fb449..94c7320abe 100644 --- a/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/HeadersFactory.java +++ b/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/HeadersFactory.java @@ -14,7 +14,7 @@ import org.checkerframework.checker.nullness.qual.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class HeadersFactory { +final class HeadersFactory { private static final Logger log = LoggerFactory.getLogger(HeadersFactory.class); @@ -35,4 +35,6 @@ class HeadersFactory { } return null; } + + private HeadersFactory() {} } diff --git a/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/HttpSpanAttributes.java b/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/HttpSpanAttributes.java index 58da7949c4..165ab5daa7 100644 --- a/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/HttpSpanAttributes.java +++ b/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/HttpSpanAttributes.java @@ -22,7 +22,7 @@ import java.nio.charset.StandardCharsets; import java.util.Map; final class HttpSpanAttributes { - void onRequest(SpanBuilder span, APIGatewayProxyRequestEvent request) { + static void onRequest(SpanBuilder span, APIGatewayProxyRequestEvent request) { String httpMethod = request.getHttpMethod(); if (httpMethod != null) { span.setAttribute(HTTP_METHOD, httpMethod); @@ -39,7 +39,8 @@ final class HttpSpanAttributes { } } - private String getHttpUrl(APIGatewayProxyRequestEvent request, Map headers) { + private static String getHttpUrl( + APIGatewayProxyRequestEvent request, Map headers) { StringBuilder str = new StringBuilder(); String scheme = headers.get("x-forwarded-proto"); @@ -70,10 +71,12 @@ final class HttpSpanAttributes { return str.toString(); } - void onResponse(Span span, APIGatewayProxyResponseEvent response) { + static void onResponse(Span span, APIGatewayProxyResponseEvent response) { Integer statusCode = response.getStatusCode(); if (statusCode != null) { span.setAttribute(HTTP_STATUS_CODE, statusCode); } } + + private HttpSpanAttributes() {} } diff --git a/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/ParentContextExtractor.java b/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/ParentContextExtractor.java index 2a2ba8e77c..63f7e76b4b 100644 --- a/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/ParentContextExtractor.java +++ b/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/ParentContextExtractor.java @@ -17,7 +17,7 @@ import java.util.Collections; import java.util.Locale; import java.util.Map; -public class ParentContextExtractor { +public final class ParentContextExtractor { private static final String AWS_TRACE_HEADER_ENV_KEY = "_X_AMZN_TRACE_ID"; @@ -73,4 +73,6 @@ public class ParentContextExtractor { return map.get(s.toLowerCase(Locale.ROOT)); } } + + private ParentContextExtractor() {} } diff --git a/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/TracingRequestStreamWrapper.java b/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/TracingRequestStreamWrapper.java index 2f8705a4d8..6a3e1ce3fb 100644 --- a/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/TracingRequestStreamWrapper.java +++ b/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/TracingRequestStreamWrapper.java @@ -38,7 +38,7 @@ public class TracingRequestStreamWrapper extends TracingRequestStreamHandler { throws IOException { if (!(wrappedLambda.getTargetObject() instanceof RequestStreamHandler)) { - throw new RuntimeException( + throw new IllegalStateException( wrappedLambda.getTargetClass().getName() + " is not an instance of RequestStreamHandler"); } diff --git a/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/TracingRequestWrapperBase.java b/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/TracingRequestWrapperBase.java index 0afd043dff..583babdab7 100644 --- a/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/TracingRequestWrapperBase.java +++ b/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/TracingRequestWrapperBase.java @@ -58,11 +58,11 @@ abstract class TracingRequestWrapperBase extends TracingRequestHandler ctor = targetClass.getConstructor(); targetObject = ctor.newInstance(); } catch (NoSuchMethodException e) { - throw new RuntimeException( - targetClass.getName() + " does not have an appropriate constructor"); + throw new IllegalStateException( + targetClass.getName() + " does not have an appropriate constructor", e); } catch (InstantiationException e) { - throw new RuntimeException(targetClass.getName() + " cannot be an abstract class"); + throw new IllegalStateException(targetClass.getName() + " cannot be an abstract class", e); } catch (IllegalAccessException e) { - throw new RuntimeException(targetClass.getName() + "'s constructor is not accessible"); + throw new IllegalStateException( + targetClass.getName() + "'s constructor is not accessible", e); } catch (InvocationTargetException e) { - throw new RuntimeException( - targetClass.getName() + " threw an exception from the constructor"); + throw new IllegalStateException( + targetClass.getName() + " threw an exception from the constructor", e); } return targetObject; } - private boolean isLastParameterContext(Parameter[] parameters) { + private static boolean isLastParameterContext(Parameter[] parameters) { if (parameters.length == 0) { return false; } @@ -92,10 +92,9 @@ class WrappedLambda { Optional firstOptional = methods.stream() .filter((Method m) -> m.getName().equals(targetMethodName)) - .sorted(this::methodComparator) - .findFirst(); + .min(WrappedLambda::methodComparator); if (!firstOptional.isPresent()) { - throw new RuntimeException("Method " + targetMethodName + " not found"); + throw new IllegalStateException("Method " + targetMethodName + " not found"); } return firstOptional.get(); } @@ -114,7 +113,7 @@ class WrappedLambda { - handleA(String, String, Integer), handleB(String, String, Context) - handleB is selected (has Context as the last parameter) - generic method handleG(T, U, Context), implementation (T, U - String) handleA(String, String, Context), bridge method handleB(Object, Object, Context) - handleA is selected (non-bridge) */ - private int methodComparator(Method a, Method b) { + private static int methodComparator(Method a, Method b) { // greater number of params wins if (a.getParameterCount() != b.getParameterCount()) { return b.getParameterCount() - a.getParameterCount(); @@ -128,7 +127,7 @@ class WrappedLambda { return onlyOneIsBridgeMethod(a, b); } - private int onlyOneIsBridgeMethod(Method first, Method second) { + private static int onlyOneIsBridgeMethod(Method first, Method second) { boolean firstBridge = first.isBridge(); boolean secondBridge = second.isBridge(); if (firstBridge && !secondBridge) { @@ -139,7 +138,7 @@ class WrappedLambda { return 0; } - private int onlyOneHasContextAsLastParam(Method first, Method second) { + private static int onlyOneHasContextAsLastParam(Method first, Method second) { boolean firstCtx = isLastParameterContext(first.getParameters()); boolean secondCtx = isLastParameterContext(second.getParameters()); // only one of the methods has last param context ? diff --git a/instrumentation/aws-lambda-1.0/library/src/test/groovy/io/opentelemetry/instrumentation/awslambda/v1_0/TracingRequestApiGatewayWrapperTest.groovy b/instrumentation/aws-lambda-1.0/library/src/test/groovy/io/opentelemetry/instrumentation/awslambda/v1_0/TracingRequestApiGatewayWrapperTest.groovy index b2e1fc63ae..4d9def1f7a 100644 --- a/instrumentation/aws-lambda-1.0/library/src/test/groovy/io/opentelemetry/instrumentation/awslambda/v1_0/TracingRequestApiGatewayWrapperTest.groovy +++ b/instrumentation/aws-lambda-1.0/library/src/test/groovy/io/opentelemetry/instrumentation/awslambda/v1_0/TracingRequestApiGatewayWrapperTest.groovy @@ -28,7 +28,7 @@ class TracingRequestApiGatewayWrapperTest extends TracingRequestWrapperTestBase } else if (input.getBody() == "empty") { return new APIGatewayProxyResponseEvent() } - throw new RuntimeException("bad request") + throw new IllegalStateException("bad request") } } diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent-unit-tests/src/test/java/TracingRequestHandlerTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent-unit-tests/src/test/java/TracingRequestHandlerTest.java index b40659b48b..e9a5da634d 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent-unit-tests/src/test/java/TracingRequestHandlerTest.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent-unit-tests/src/test/java/TracingRequestHandlerTest.java @@ -19,11 +19,11 @@ import org.junit.Test; public class TracingRequestHandlerTest { - private Response response(Request request) { + private static Response response(Request request) { return new Response<>(new SendMessageResult(), new HttpResponse(request, new HttpGet())); } - private Request request() { + private static Request request() { Request request = new DefaultRequest<>(new SendMessageRequest(), "test"); request.setEndpoint(URI.create("http://test.uri")); return request; diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy index a06eff7a93..c6e982f184 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy @@ -77,7 +77,7 @@ class Aws1ClientTest extends AbstractAws1ClientTest implements AgentTestTrait { def client = new AmazonS3Client(CREDENTIALS_PROVIDER_CHAIN) client.addRequestHandler(new RequestHandler2() { void beforeRequest(Request request) { - throw new RuntimeException("bad handler") + throw new IllegalStateException("bad handler") } }) @@ -86,7 +86,7 @@ class Aws1ClientTest extends AbstractAws1ClientTest implements AgentTestTrait { then: !Span.current().getSpanContext().isValid() - thrown RuntimeException + thrown IllegalStateException assertTraces(1) { trace(0, 1) { @@ -94,7 +94,7 @@ class Aws1ClientTest extends AbstractAws1ClientTest implements AgentTestTrait { name "S3.HeadBucket" kind SpanKind.CLIENT status ERROR - errorEvent RuntimeException, "bad handler" + errorEvent IllegalStateException, "bad handler" hasNoParent() attributes { "${SemanticAttributes.NET_TRANSPORT.key}" IP_TCP diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test_before_1_11_106/groovy/Aws0ClientTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test_before_1_11_106/groovy/Aws0ClientTest.groovy index c3812aeaf0..fb9c0c89e4 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test_before_1_11_106/groovy/Aws0ClientTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test_before_1_11_106/groovy/Aws0ClientTest.groovy @@ -193,7 +193,7 @@ class Aws0ClientTest extends AgentInstrumentationSpecification { def client = new AmazonS3Client(CREDENTIALS_PROVIDER_CHAIN) client.addRequestHandler(new RequestHandler2() { void beforeRequest(Request request) { - throw new RuntimeException("bad handler") + throw new IllegalStateException("bad handler") } }) @@ -202,7 +202,7 @@ class Aws0ClientTest extends AgentInstrumentationSpecification { then: !Span.current().getSpanContext().isValid() - thrown RuntimeException + thrown IllegalStateException assertTraces(1) { trace(0, 1) { @@ -210,7 +210,7 @@ class Aws0ClientTest extends AgentInstrumentationSpecification { name "S3.GetObject" kind CLIENT status ERROR - errorEvent RuntimeException, "bad handler" + errorEvent IllegalStateException, "bad handler" hasNoParent() attributes { "${SemanticAttributes.NET_TRANSPORT.key}" IP_TCP diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/TracingRequestHandler.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/TracingRequestHandler.java index b989278dd9..575c7fa14c 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/TracingRequestHandler.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/TracingRequestHandler.java @@ -40,7 +40,7 @@ final class TracingRequestHandler extends RequestHandler2 { request.addHandlerContext(CONTEXT, context); } - private boolean isSqsProducer(AmazonWebServiceRequest request) { + private static boolean isSqsProducer(AmazonWebServiceRequest request) { return request .getClass() .getName() diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsJsonProtocolFactoryAccess.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsJsonProtocolFactoryAccess.java index 44817efa37..af4b3d17ff 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsJsonProtocolFactoryAccess.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsJsonProtocolFactoryAccess.java @@ -22,7 +22,7 @@ final class AwsJsonProtocolFactoryAccess { private static final OperationInfo OPERATION_INFO = OperationInfo.builder().hasPayloadMembers(true).httpMethod(SdkHttpMethod.POST).build(); - private static final MethodHandle INVOKE_CREATE_PROTOCOL_MARSHALLER; + @Nullable private static final MethodHandle INVOKE_CREATE_PROTOCOL_MARSHALLER; static { MethodHandle invokeCreateProtocolMarshaller = null; diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/MethodHandleFactory.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/MethodHandleFactory.java index 2abf4d66d2..211e31aa27 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/MethodHandleFactory.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/MethodHandleFactory.java @@ -12,7 +12,7 @@ import java.util.concurrent.ConcurrentHashMap; class MethodHandleFactory { - private String lowerCase(String string) { + private static String unCapitalize(String string) { return string.substring(0, 1).toLowerCase(Locale.ROOT) + string.substring(1); } @@ -29,7 +29,8 @@ class MethodHandleFactory { MethodHandle methodHandle = getterCache.get(clazz).get(fieldName); if (methodHandle == null) { // getter in AWS SDK is lowercased field name - methodHandle = MethodHandles.publicLookup().unreflect(clazz.getMethod(lowerCase(fieldName))); + methodHandle = + MethodHandles.publicLookup().unreflect(clazz.getMethod(unCapitalize(fieldName))); getterCache.get(clazz).put(fieldName, methodHandle); } return methodHandle; diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/Serializer.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/Serializer.java index 6f7cdd8f82..d3460bff48 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/Serializer.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/Serializer.java @@ -42,7 +42,7 @@ class Serializer { } @Nullable - private String serialize(SdkPojo sdkPojo) { + private static String serialize(SdkPojo sdkPojo) { ProtocolMarshaller marshaller = AwsJsonProtocolFactoryAccess.createMarshaller(); if (marshaller == null) { diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/TracingExecutionInterceptor.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/TracingExecutionInterceptor.java index 0a2096dede..fda5b0abfa 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/TracingExecutionInterceptor.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/TracingExecutionInterceptor.java @@ -163,7 +163,7 @@ final class TracingExecutionInterceptor implements ExecutionInterceptor { tracer.endExceptionally(otelContext, context.exception()); } - private void clearAttributes(ExecutionAttributes executionAttributes) { + private static void clearAttributes(ExecutionAttributes executionAttributes) { Scope scope = executionAttributes.getAttribute(SCOPE_ATTRIBUTE); if (scope != null) { scope.close(); diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/FieldMapperTest.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/FieldMapperTest.java index 28ffcbb24e..c72ede715a 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/FieldMapperTest.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/FieldMapperTest.java @@ -8,9 +8,9 @@ package io.opentelemetry.instrumentation.awssdk.v2_2; import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkRequest.BatchWriteItem; import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkRequest.UpdateTable; import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.mock; -import static org.mockito.BDDMockito.verify; -import static org.mockito.BDDMockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; import io.opentelemetry.api.trace.Span; import java.util.Collection; diff --git a/instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/TracingSession.java b/instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/TracingSession.java index d9ffc3b337..48c9e2c5cc 100644 --- a/instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/TracingSession.java +++ b/instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/TracingSession.java @@ -208,7 +208,7 @@ public class TracingSession implements Session { return query == null ? "" : query; } - private void addCallbackToEndSpan( + private static void addCallbackToEndSpan( ResultSetFuture future, Context context, CassandraRequest request) { Futures.addCallback( future, diff --git a/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseQuerySanitizer.java b/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseQuerySanitizer.java index e17be53daa..db487f9a95 100644 --- a/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseQuerySanitizer.java +++ b/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseQuerySanitizer.java @@ -10,14 +10,15 @@ import io.opentelemetry.instrumentation.api.db.SqlStatementSanitizer; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; +import org.checkerframework.checker.nullness.qual.Nullable; public final class CouchbaseQuerySanitizer { - private static final Class QUERY_CLASS; - private static final Class STATEMENT_CLASS; - private static final Class N1QL_QUERY_CLASS; - private static final MethodHandle N1QL_GET_STATEMENT; - private static final Class ANALYTICS_QUERY_CLASS; - private static final MethodHandle ANALYTICS_GET_STATEMENT; + @Nullable private static final Class QUERY_CLASS; + @Nullable private static final Class STATEMENT_CLASS; + @Nullable private static final Class N1QL_QUERY_CLASS; + @Nullable private static final MethodHandle N1QL_GET_STATEMENT; + @Nullable private static final Class ANALYTICS_QUERY_CLASS; + @Nullable private static final MethodHandle ANALYTICS_GET_STATEMENT; static { Class queryClass; diff --git a/instrumentation/executors/javaagent/src/test/java/JavaAsyncChild.java b/instrumentation/executors/javaagent/src/test/java/JavaAsyncChild.java index cf65e0b7bc..1eedd34544 100644 --- a/instrumentation/executors/javaagent/src/test/java/JavaAsyncChild.java +++ b/instrumentation/executors/javaagent/src/test/java/JavaAsyncChild.java @@ -18,7 +18,12 @@ public class JavaAsyncChild extends ForkJoinTask implements Runnable, Callable { private final CountDownLatch latch = new CountDownLatch(1); public JavaAsyncChild() { - this(true, false); + this(/* doTraceableWork= */ true, /* blockThread= */ false); + } + + public JavaAsyncChild(boolean doTraceableWork, boolean blockThread) { + this.doTraceableWork = doTraceableWork; + this.blockThread = new AtomicBoolean(blockThread); } @Override @@ -35,11 +40,6 @@ public class JavaAsyncChild extends ForkJoinTask implements Runnable, Callable { return true; } - public JavaAsyncChild(boolean doTraceableWork, boolean blockThread) { - this.doTraceableWork = doTraceableWork; - this.blockThread = new AtomicBoolean(blockThread); - } - public void unblock() { blockThread.set(false); } @@ -69,7 +69,7 @@ public class JavaAsyncChild extends ForkJoinTask implements Runnable, Callable { latch.countDown(); } - private void asyncChild() { + private static void asyncChild() { tracer.spanBuilder("asyncChild").startSpan().end(); } } diff --git a/instrumentation/external-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/extannotations/ExternalAnnotationInstrumentation.java b/instrumentation/external-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/extannotations/ExternalAnnotationInstrumentation.java index 3255c2b2f7..6c856a6488 100644 --- a/instrumentation/external-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/extannotations/ExternalAnnotationInstrumentation.java +++ b/instrumentation/external-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/extannotations/ExternalAnnotationInstrumentation.java @@ -69,21 +69,20 @@ public class ExternalAnnotationInstrumentation implements TypeInstrumentation { private static final String TRACE_ANNOTATED_METHODS_EXCLUDE_CONFIG = "otel.instrumentation.external-annotations.exclude-methods"; - private final Set additionalTraceAnnotations; private final ElementMatcher.Junction classLoaderOptimization; private final ElementMatcher.Junction traceAnnotationMatcher; /** This matcher matches all methods that should be excluded from transformation. */ private final ElementMatcher.Junction excludedMethodsMatcher; public ExternalAnnotationInstrumentation() { - additionalTraceAnnotations = configureAdditionalTraceAnnotations(Config.get()); + Set additionalTraceAnnotations = configureAdditionalTraceAnnotations(Config.get()); if (additionalTraceAnnotations.isEmpty()) { classLoaderOptimization = none(); traceAnnotationMatcher = none(); } else { - ElementMatcher.Junction classLoaderMatcher = null; - ElementMatcher.Junction methodTraceMatcher = null; + ElementMatcher.Junction classLoaderMatcher = none(); + ElementMatcher.Junction methodTraceMatcher = none(); for (String annotationName : additionalTraceAnnotations) { if (methodTraceMatcher == null) { classLoaderMatcher = hasClassesNamed(annotationName); diff --git a/instrumentation/external-annotations/javaagent/src/test/java/io/opentelemetry/test/annotation/SayTracedHello.java b/instrumentation/external-annotations/javaagent/src/test/java/io/opentelemetry/test/annotation/SayTracedHello.java index 18457e510b..e3a196bbb3 100644 --- a/instrumentation/external-annotations/javaagent/src/test/java/io/opentelemetry/test/annotation/SayTracedHello.java +++ b/instrumentation/external-annotations/javaagent/src/test/java/io/opentelemetry/test/annotation/SayTracedHello.java @@ -8,6 +8,8 @@ package io.opentelemetry.test.annotation; import io.opentelemetry.api.trace.Span; import java.util.concurrent.Callable; +// To better see which library is tested +@SuppressWarnings("UnnecessarilyFullyQualified") public class SayTracedHello { @com.appoptics.api.ext.LogMethod @@ -78,7 +80,7 @@ public class SayTracedHello { @io.opentracing.contrib.dropwizard.Trace public static String sayError() { - throw new RuntimeException(); + throw new IllegalStateException(); } public static String fromCallable() { diff --git a/instrumentation/guava-10.0/library/src/main/java/io/opentelemetry/instrumentation/guava/GuavaAsyncSpanEndStrategy.java b/instrumentation/guava-10.0/library/src/main/java/io/opentelemetry/instrumentation/guava/GuavaAsyncSpanEndStrategy.java index 6c6b6d71d4..9c480a1da1 100644 --- a/instrumentation/guava-10.0/library/src/main/java/io/opentelemetry/instrumentation/guava/GuavaAsyncSpanEndStrategy.java +++ b/instrumentation/guava-10.0/library/src/main/java/io/opentelemetry/instrumentation/guava/GuavaAsyncSpanEndStrategy.java @@ -6,6 +6,7 @@ package io.opentelemetry.instrumentation.guava; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.Uninterruptibles; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.tracer.BaseTracer; import io.opentelemetry.instrumentation.api.tracer.async.AsyncSpanEndStrategy; @@ -29,9 +30,9 @@ public enum GuavaAsyncSpanEndStrategy implements AsyncSpanEndStrategy { return future; } - private void endSpan(BaseTracer tracer, Context context, ListenableFuture future) { + private static void endSpan(BaseTracer tracer, Context context, ListenableFuture future) { try { - future.get(); + Uninterruptibles.getUninterruptibly(future); tracer.end(context); } catch (Throwable exception) { tracer.endExceptionally(context, exception); diff --git a/instrumentation/gwt-2.0/javaagent/src/test/groovy/GwtTest.groovy b/instrumentation/gwt-2.0/javaagent/src/test/groovy/GwtTest.groovy index f69aa529d7..2db6237eaa 100644 --- a/instrumentation/gwt-2.0/javaagent/src/test/groovy/GwtTest.groovy +++ b/instrumentation/gwt-2.0/javaagent/src/test/groovy/GwtTest.groovy @@ -134,7 +134,7 @@ class GwtTest extends AgentInstrumentationSpecification implements HttpServerTes assertTraces(1) { trace(0, 2) { serverSpan(it, 0, getContextPath() + "/greeting/greet") - basicSpan(it, 1, "MessageServiceImpl.sendMessage", span(0), new IllegalArgumentException()) + basicSpan(it, 1, "MessageServiceImpl.sendMessage", span(0), new IOException()) } } diff --git a/instrumentation/gwt-2.0/javaagent/src/testapp/java/test/gwt/client/GreetingEntryPoint.java b/instrumentation/gwt-2.0/javaagent/src/testapp/java/test/gwt/client/GreetingEntryPoint.java index b8034de4e1..f094cb3bd0 100644 --- a/instrumentation/gwt-2.0/javaagent/src/testapp/java/test/gwt/client/GreetingEntryPoint.java +++ b/instrumentation/gwt-2.0/javaagent/src/testapp/java/test/gwt/client/GreetingEntryPoint.java @@ -13,6 +13,7 @@ import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.RootPanel; +import java.io.IOException; import test.gwt.shared.MessageService; import test.gwt.shared.MessageServiceAsync; @@ -49,21 +50,25 @@ public class GreetingEntryPoint implements EntryPoint { messageLabel.setText(""); messageLabel.setStyleName(""); - messageServiceAsync.sendMessage( - message, - new AsyncCallback() { - @Override - public void onFailure(Throwable caught) { - messageLabel.setText("Error"); - messageLabel.addStyleName("error.received"); - } + try { + messageServiceAsync.sendMessage( + message, + new AsyncCallback() { + @Override + public void onFailure(Throwable caught) { + messageLabel.setText("Error"); + messageLabel.addStyleName("error.received"); + } - @Override - public void onSuccess(String result) { - messageLabel.setText(result); - messageLabel.addStyleName("message.received"); - } - }); + @Override + public void onSuccess(String result) { + messageLabel.setText(result); + messageLabel.addStyleName("message.received"); + } + }); + } catch (IOException e) { + throw new IllegalStateException(e); + } } } diff --git a/instrumentation/gwt-2.0/javaagent/src/testapp/java/test/gwt/server/MessageServiceImpl.java b/instrumentation/gwt-2.0/javaagent/src/testapp/java/test/gwt/server/MessageServiceImpl.java index 9723142eb1..95fb0ce17c 100644 --- a/instrumentation/gwt-2.0/javaagent/src/testapp/java/test/gwt/server/MessageServiceImpl.java +++ b/instrumentation/gwt-2.0/javaagent/src/testapp/java/test/gwt/server/MessageServiceImpl.java @@ -6,6 +6,7 @@ package test.gwt.server; import com.google.gwt.user.server.rpc.RemoteServiceServlet; +import java.io.IOException; import test.gwt.shared.MessageService; /** The server-side implementation of the RPC service. */ @@ -13,9 +14,9 @@ import test.gwt.shared.MessageService; public class MessageServiceImpl extends RemoteServiceServlet implements MessageService { @Override - public String sendMessage(String message) throws IllegalArgumentException { + public String sendMessage(String message) throws IOException { if (message == null || "Error".equals(message)) { - throw new IllegalArgumentException(); + throw new IOException(); } return "Hello, " + message; diff --git a/instrumentation/gwt-2.0/javaagent/src/testapp/java/test/gwt/shared/MessageService.java b/instrumentation/gwt-2.0/javaagent/src/testapp/java/test/gwt/shared/MessageService.java index 3e1fb1fdea..0a514c3d12 100644 --- a/instrumentation/gwt-2.0/javaagent/src/testapp/java/test/gwt/shared/MessageService.java +++ b/instrumentation/gwt-2.0/javaagent/src/testapp/java/test/gwt/shared/MessageService.java @@ -7,9 +7,10 @@ package test.gwt.shared; import com.google.gwt.user.client.rpc.RemoteService; import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; +import java.io.IOException; /** The client-side stub for the RPC service. */ @RemoteServiceRelativePath("greet") public interface MessageService extends RemoteService { - String sendMessage(String message) throws IllegalArgumentException; + String sendMessage(String message) throws IOException; } diff --git a/instrumentation/gwt-2.0/javaagent/src/testapp/java/test/gwt/shared/MessageServiceAsync.java b/instrumentation/gwt-2.0/javaagent/src/testapp/java/test/gwt/shared/MessageServiceAsync.java index 7a8603db0d..6c3d2b8cee 100644 --- a/instrumentation/gwt-2.0/javaagent/src/testapp/java/test/gwt/shared/MessageServiceAsync.java +++ b/instrumentation/gwt-2.0/javaagent/src/testapp/java/test/gwt/shared/MessageServiceAsync.java @@ -6,8 +6,9 @@ package test.gwt.shared; import com.google.gwt.user.client.rpc.AsyncCallback; +import java.io.IOException; /** The async counterpart of MessageService. */ public interface MessageServiceAsync { - void sendMessage(String input, AsyncCallback callback) throws IllegalArgumentException; + void sendMessage(String input, AsyncCallback callback) throws IOException; } diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/hibernate6Test/java/spring/jpa/PersistenceConfig.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/hibernate6Test/java/spring/jpa/PersistenceConfig.java index bd6b88985b..d161e7526a 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/hibernate6Test/java/spring/jpa/PersistenceConfig.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/hibernate6Test/java/spring/jpa/PersistenceConfig.java @@ -52,7 +52,7 @@ public class PersistenceConfig { return dataSource; } - private Properties additionalProperties() { + private static Properties additionalProperties() { Properties properties = new Properties(); properties.setProperty("hibernate.show_sql", "true"); properties.setProperty("hibernate.hbm2ddl.auto", "create"); diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/spring/jpa/PersistenceConfig.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/spring/jpa/PersistenceConfig.java index bd6b88985b..d161e7526a 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/spring/jpa/PersistenceConfig.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/spring/jpa/PersistenceConfig.java @@ -52,7 +52,7 @@ public class PersistenceConfig { return dataSource; } - private Properties additionalProperties() { + private static Properties additionalProperties() { Properties properties = new Properties(); properties.setProperty("hibernate.show_sql", "true"); properties.setProperty("hibernate.hbm2ddl.auto", "create"); diff --git a/instrumentation/hibernate/hibernate-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/SessionMethodUtils.java b/instrumentation/hibernate/hibernate-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/SessionMethodUtils.java index d793a43c7c..978f0d4916 100644 --- a/instrumentation/hibernate/hibernate-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/SessionMethodUtils.java +++ b/instrumentation/hibernate/hibernate-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/SessionMethodUtils.java @@ -19,7 +19,7 @@ import java.util.Set; import java.util.function.Supplier; import org.checkerframework.checker.nullness.qual.Nullable; -public class SessionMethodUtils { +public final class SessionMethodUtils { public static final Set SCOPE_ONLY_METHODS = new HashSet<>(Arrays.asList("immediateLoad", "internalLoad")); @@ -107,4 +107,6 @@ public class SessionMethodUtils { targetContextStore.putIfAbsent(target, sessionContext); } + + private SessionMethodUtils() {} } diff --git a/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/CxfClientUtil.java b/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/CxfClientUtil.java index e53daf4768..0a203d859a 100644 --- a/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/CxfClientUtil.java +++ b/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/CxfClientUtil.java @@ -15,7 +15,8 @@ import org.apache.cxf.message.Message; public final class CxfClientUtil { public static void handleException(Message message, Throwable throwable) { - ClientRequestContext context = new ClientRequestContextImpl(message, false); + ClientRequestContext context = + new ClientRequestContextImpl(message, /* responseContext= */ false); Object prop = context.getProperty(ClientTracingFilter.CONTEXT_PROPERTY_NAME); if (prop instanceof Context) { tracer().endExceptionally((Context) prop, throwable); diff --git a/instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxRsAnnotationsTracer.java b/instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxRsAnnotationsTracer.java index 620416e8be..68d419d2c7 100644 --- a/instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxRsAnnotationsTracer.java +++ b/instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxRsAnnotationsTracer.java @@ -57,14 +57,14 @@ public class JaxRsAnnotationsTracer extends BaseTracer { return parentContext.with(span); } - private void setCodeAttributes(SpanBuilder spanBuilder, Class target, Method method) { + private static void setCodeAttributes(SpanBuilder spanBuilder, Class target, Method method) { spanBuilder.setAttribute(SemanticAttributes.CODE_NAMESPACE, target.getName()); if (method != null) { spanBuilder.setAttribute(SemanticAttributes.CODE_FUNCTION, method.getName()); } } - private void updateServerSpanName(Context context, Span span, String spanName) { + private static void updateServerSpanName(Context context, Span span, String spanName) { if (!spanName.isEmpty()) { span.updateName(ServletContextPath.prepend(context, spanName)); } @@ -111,7 +111,7 @@ public class JaxRsAnnotationsTracer extends BaseTracer { return spanName; } - private String locateHttpMethod(Method method) { + private static String locateHttpMethod(Method method) { String httpMethod = null; for (Annotation ann : method.getDeclaredAnnotations()) { if (ann.annotationType().getAnnotation(HttpMethod.class) != null) { @@ -121,11 +121,11 @@ public class JaxRsAnnotationsTracer extends BaseTracer { return httpMethod; } - private Path findMethodPath(Method method) { + private static Path findMethodPath(Method method) { return method.getAnnotation(Path.class); } - private Path findClassPath(Class target) { + private static Path findClassPath(Class target) { for (Class currentClass : new ClassHierarchyIterable(target)) { Path annotation = currentClass.getAnnotation(Path.class); if (annotation != null) { @@ -137,7 +137,7 @@ public class JaxRsAnnotationsTracer extends BaseTracer { return null; } - private Method findMatchingMethod(Method baseMethod, Method[] methods) { + private static Method findMatchingMethod(Method baseMethod, Method[] methods) { nextMethod: for (Method method : methods) { if (!baseMethod.getReturnType().equals(method.getReturnType())) { @@ -163,7 +163,7 @@ public class JaxRsAnnotationsTracer extends BaseTracer { return null; } - private String buildSpanName(Path classPath, Path methodPath) { + private static String buildSpanName(Path classPath, Path methodPath) { String spanName; StringBuilder spanNameBuilder = new StringBuilder(); boolean skipSlash = false; diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxRsAnnotationsTracer.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxRsAnnotationsTracer.java index 26988bd8f9..4db319b804 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxRsAnnotationsTracer.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxRsAnnotationsTracer.java @@ -73,13 +73,13 @@ public class JaxRsAnnotationsTracer extends BaseTracer { } } - private void updateSpanName(Span span, String spanName) { + private static void updateSpanName(Span span, String spanName) { if (!spanName.isEmpty()) { span.updateName(spanName); } } - private void setCodeAttributes(SpanBuilder spanBuilder, Class target, Method method) { + private static void setCodeAttributes(SpanBuilder spanBuilder, Class target, Method method) { spanBuilder.setAttribute(SemanticAttributes.CODE_NAMESPACE, target.getName()); if (method != null) { spanBuilder.setAttribute(SemanticAttributes.CODE_FUNCTION, method.getName()); @@ -143,7 +143,7 @@ public class JaxRsAnnotationsTracer extends BaseTracer { return spanName; } - private String locateHttpMethod(Method method) { + private static String locateHttpMethod(Method method) { String httpMethod = null; for (Annotation ann : method.getDeclaredAnnotations()) { if (ann.annotationType().getAnnotation(HttpMethod.class) != null) { @@ -153,11 +153,11 @@ public class JaxRsAnnotationsTracer extends BaseTracer { return httpMethod; } - private Path findMethodPath(Method method) { + private static Path findMethodPath(Method method) { return method.getAnnotation(Path.class); } - private Path findClassPath(Class target) { + private static Path findClassPath(Class target) { for (Class currentClass : new ClassHierarchyIterable(target)) { Path annotation = currentClass.getAnnotation(Path.class); if (annotation != null) { @@ -169,7 +169,7 @@ public class JaxRsAnnotationsTracer extends BaseTracer { return null; } - private Method findMatchingMethod(Method baseMethod, Method[] methods) { + private static Method findMatchingMethod(Method baseMethod, Method[] methods) { nextMethod: for (Method method : methods) { if (!baseMethod.getReturnType().equals(method.getReturnType())) { @@ -195,7 +195,7 @@ public class JaxRsAnnotationsTracer extends BaseTracer { return null; } - private String buildSpanName(Path classPath, Path methodPath) { + private static String buildSpanName(Path classPath, Path methodPath) { String spanName; StringBuilder spanNameBuilder = new StringBuilder(); boolean skipSlash = false; diff --git a/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/JdbcUtils.java b/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/JdbcUtils.java index 396b871968..a4337faff4 100644 --- a/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/JdbcUtils.java +++ b/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/JdbcUtils.java @@ -10,6 +10,7 @@ import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.SQLException; import java.sql.Statement; +import org.checkerframework.checker.nullness.qual.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,7 +18,7 @@ public final class JdbcUtils { private static final Logger log = LoggerFactory.getLogger(JdbcUtils.class); - private static Field c3poField = null; + @Nullable private static Field c3poField = null; /** Returns the unwrapped connection or null if exception was thrown. */ public static Connection connectionFromStatement(Statement statement) { diff --git a/instrumentation/jdbc/javaagent/src/test/groovy/test/TestConnection.groovy b/instrumentation/jdbc/javaagent/src/test/groovy/test/TestConnection.groovy index 9adebacaf3..9eca7a13a2 100644 --- a/instrumentation/jdbc/javaagent/src/test/groovy/test/TestConnection.groovy +++ b/instrumentation/jdbc/javaagent/src/test/groovy/test/TestConnection.groovy @@ -29,7 +29,7 @@ import java.util.concurrent.Executor class TestConnection implements Connection { TestConnection(boolean throwException) { if (throwException) { - throw new RuntimeException("connection exception") + throw new IllegalStateException("connection exception") } } diff --git a/instrumentation/jetty/jetty-11.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/v11_0/Jetty11HttpServerTracer.java b/instrumentation/jetty/jetty-11.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/v11_0/Jetty11HttpServerTracer.java index 91c8875237..678d0fc878 100644 --- a/instrumentation/jetty/jetty-11.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/v11_0/Jetty11HttpServerTracer.java +++ b/instrumentation/jetty/jetty-11.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/v11_0/Jetty11HttpServerTracer.java @@ -18,13 +18,13 @@ public class Jetty11HttpServerTracer extends JakartaServletHttpServerTracer { } public Context startServerSpan(HttpServletRequest request) { - return startSpan(request, "HTTP " + request.getMethod(), false); + return startSpan(request, "HTTP " + request.getMethod(), /* servlet= */ false); } @Override protected Context customizeContext(Context context, HttpServletRequest request) { context = super.customizeContext(context, request); - return AppServerBridge.init(context, false); + return AppServerBridge.init(context, /* shouldRecordException= */ false); } @Override diff --git a/instrumentation/jetty/jetty-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/v8_0/Jetty8HttpServerTracer.java b/instrumentation/jetty/jetty-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/v8_0/Jetty8HttpServerTracer.java index de20c1b8e7..8595d0484a 100644 --- a/instrumentation/jetty/jetty-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/v8_0/Jetty8HttpServerTracer.java +++ b/instrumentation/jetty/jetty-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/v8_0/Jetty8HttpServerTracer.java @@ -18,13 +18,13 @@ public class Jetty8HttpServerTracer extends Servlet3HttpServerTracer { } public Context startServerSpan(HttpServletRequest request) { - return startSpan(request, "HTTP " + request.getMethod(), false); + return startSpan(request, "HTTP " + request.getMethod(), /* servlet= */ false); } @Override protected Context customizeContext(Context context, HttpServletRequest request) { context = super.customizeContext(context, request); - return AppServerBridge.init(context, false); + return AppServerBridge.init(context, /* shouldRecordException= */ false); } @Override diff --git a/instrumentation/jetty/jetty-8.0/javaagent/src/test/groovy/JavaAsyncChild.java b/instrumentation/jetty/jetty-8.0/javaagent/src/test/groovy/JavaAsyncChild.java index cf65e0b7bc..1eedd34544 100644 --- a/instrumentation/jetty/jetty-8.0/javaagent/src/test/groovy/JavaAsyncChild.java +++ b/instrumentation/jetty/jetty-8.0/javaagent/src/test/groovy/JavaAsyncChild.java @@ -18,7 +18,12 @@ public class JavaAsyncChild extends ForkJoinTask implements Runnable, Callable { private final CountDownLatch latch = new CountDownLatch(1); public JavaAsyncChild() { - this(true, false); + this(/* doTraceableWork= */ true, /* blockThread= */ false); + } + + public JavaAsyncChild(boolean doTraceableWork, boolean blockThread) { + this.doTraceableWork = doTraceableWork; + this.blockThread = new AtomicBoolean(blockThread); } @Override @@ -35,11 +40,6 @@ public class JavaAsyncChild extends ForkJoinTask implements Runnable, Callable { return true; } - public JavaAsyncChild(boolean doTraceableWork, boolean blockThread) { - this.doTraceableWork = doTraceableWork; - this.blockThread = new AtomicBoolean(blockThread); - } - public void unblock() { blockThread.set(false); } @@ -69,7 +69,7 @@ public class JavaAsyncChild extends ForkJoinTask implements Runnable, Callable { latch.countDown(); } - private void asyncChild() { + private static void asyncChild() { tracer.spanBuilder("asyncChild").startSpan().end(); } } diff --git a/instrumentation/jms-1.1/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/MessageWithDestinationTest.java b/instrumentation/jms-1.1/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/MessageWithDestinationTest.java index 1d7a5c68f5..c0bd6c22d3 100644 --- a/instrumentation/jms-1.1/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/MessageWithDestinationTest.java +++ b/instrumentation/jms-1.1/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/MessageWithDestinationTest.java @@ -49,7 +49,13 @@ class MessageWithDestinationTest { MessageWithDestination.create(message, MessageOperation.SEND, null, START_TIME); // then - assertMessage(MessageOperation.SEND, "unknown", "unknown", false, START_TIME, result); + assertMessage( + MessageOperation.SEND, + "unknown", + "unknown", + /* expectedTemporary= */ false, + START_TIME, + result); } @Test @@ -62,7 +68,13 @@ class MessageWithDestinationTest { MessageWithDestination.create(message, MessageOperation.SEND, destination, START_TIME); // then - assertMessage(MessageOperation.SEND, "unknown", "unknown", false, START_TIME, result); + assertMessage( + MessageOperation.SEND, + "unknown", + "unknown", + /* expectedTemporary= */ false, + START_TIME, + result); } @ParameterizedTest diff --git a/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/MessagePropertyGetter.java b/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/MessagePropertyGetter.java index 026b2fafb8..cf21739f2a 100644 --- a/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/MessagePropertyGetter.java +++ b/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/MessagePropertyGetter.java @@ -27,7 +27,7 @@ public final class MessagePropertyGetter implements TextMapGetter> { * Note: this may potentially create problems if this iterator is used from different threads. But * at the moment we cannot do much about this. */ - private Context currentContext; + @Nullable private Context currentContext; - private Scope currentScope; + @Nullable private Scope currentScope; public TracingIterator( Iterator> delegateIterator, KafkaConsumerTracer tracer) { diff --git a/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesRequestDigest.java b/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesRequestDigest.java index 73d514ec58..04653a8a2d 100644 --- a/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesRequestDigest.java +++ b/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesRequestDigest.java @@ -39,7 +39,7 @@ class KubernetesRequestDigest { return new KubernetesRequestDigest( urlPath, - false, + /* isNonResourceRequest= */ false, resourceMeta, KubernetesVerb.of( request.method(), hasNamePathParameter(resourceMeta), hasWatchParameter(request))); @@ -49,8 +49,7 @@ class KubernetesRequestDigest { } private static KubernetesRequestDigest nonResource(String urlPath) { - KubernetesRequestDigest digest = new KubernetesRequestDigest(urlPath, true, null, null); - return digest; + return new KubernetesRequestDigest(urlPath, /* isNonResourceRequest= */ true, null, null); } public static boolean isResourceRequest(String urlPath) { diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/rx/LettuceFluxTerminationRunnable.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/rx/LettuceFluxTerminationRunnable.java index 7c4142031f..6945edf069 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/rx/LettuceFluxTerminationRunnable.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/rx/LettuceFluxTerminationRunnable.java @@ -58,7 +58,7 @@ public class LettuceFluxTerminationRunnable implements Consumer>, Runn public void accept(Signal signal) { if (SignalType.ON_COMPLETE.equals(signal.getType()) || SignalType.ON_ERROR.equals(signal.getType())) { - finishSpan(false, signal.getThrowable()); + finishSpan(/* isCommandCancelled= */ false, signal.getThrowable()); } else if (SignalType.ON_NEXT.equals(signal.getType())) { ++numResults; } @@ -66,7 +66,7 @@ public class LettuceFluxTerminationRunnable implements Consumer>, Runn @Override public void run() { - finishSpan(true, null); + finishSpan(/* isCommandCancelled= */ true, null); } public static class FluxOnSubscribeConsumer implements Consumer { diff --git a/instrumentation/liberty/liberty/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/LibertyHttpServerTracer.java b/instrumentation/liberty/liberty/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/LibertyHttpServerTracer.java index d46a95689b..52a2a3b413 100644 --- a/instrumentation/liberty/liberty/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/LibertyHttpServerTracer.java +++ b/instrumentation/liberty/liberty/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/LibertyHttpServerTracer.java @@ -17,7 +17,7 @@ public class LibertyHttpServerTracer extends Servlet3HttpServerTracer { } public Context startSpan(HttpServletRequest request) { - return startSpan(request, "HTTP " + request.getMethod(), false); + return startSpan(request, "HTTP " + request.getMethod(), /* servlet= */ false); } @Override diff --git a/instrumentation/log4j/log4j-2-testing/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/ListAppender.java b/instrumentation/log4j/log4j-2-testing/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/ListAppender.java index d2b8487a50..c917548759 100644 --- a/instrumentation/log4j/log4j-2-testing/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/ListAppender.java +++ b/instrumentation/log4j/log4j-2-testing/src/main/java/io/opentelemetry/instrumentation/log4j/v2_13_2/ListAppender.java @@ -33,7 +33,7 @@ public class ListAppender extends AbstractAppender { private final List events = Collections.synchronizedList(new ArrayList<>()); public ListAppender() { - super("ListAppender", null, null, true); + super("ListAppender", null, null, /* ignoreExceptions= */ true); } public List getEvents() { diff --git a/instrumentation/logback/logback-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/v1_0/LoggingEventWrapper.java b/instrumentation/logback/logback-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/v1_0/LoggingEventWrapper.java index b27e34bdea..b1847cb394 100644 --- a/instrumentation/logback/logback-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/v1_0/LoggingEventWrapper.java +++ b/instrumentation/logback/logback-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/v1_0/LoggingEventWrapper.java @@ -10,12 +10,13 @@ import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.classic.spi.IThrowableProxy; import ch.qos.logback.classic.spi.LoggerContextVO; import java.util.Map; +import org.checkerframework.checker.nullness.qual.Nullable; import org.slf4j.Marker; final class LoggingEventWrapper implements ILoggingEvent { private final ILoggingEvent event; private final Map mdcPropertyMap; - private final LoggerContextVO vo; + @Nullable private final LoggerContextVO vo; LoggingEventWrapper(ILoggingEvent event, Map mdcPropertyMap) { this.event = event; diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoClientTracer.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoClientTracer.java index 9319c48d61..7b4b52c05d 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoClientTracer.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoClientTracer.java @@ -60,7 +60,7 @@ final class MongoClientTracer jsonWriterSettings != null ? new JsonWriter(stringWriter, jsonWriterSettings) : new JsonWriter(stringWriter); - writeScrubbed(command, jsonWriter, true); + writeScrubbed(command, jsonWriter, /* isRoot= */ true); // If using MongoDB driver >= 3.7, the substring invocation will be a no-op due to use of // JsonWriterSettings.Builder.maxLength in the static initializer for JSON_WRITER_SETTINGS StringBuffer buf = stringWriter.getBuffer(); @@ -147,7 +147,7 @@ final class MongoClientTracer } @Nullable - private JsonWriterSettings createJsonWriterSettings(int maxNormalizedQueryLength) { + private static JsonWriterSettings createJsonWriterSettings(int maxNormalizedQueryLength) { JsonWriterSettings settings = null; try { // The static JsonWriterSettings.builder() method was introduced in the 3.5 release @@ -234,7 +234,7 @@ final class MongoClientTracer private static boolean writeScrubbed(BsonValue origin, JsonWriter writer) { if (origin.isDocument()) { - return writeScrubbed(origin.asDocument(), writer, false); + return writeScrubbed(origin.asDocument(), writer, /* isRoot= */ false); } else if (origin.isArray()) { return writeScrubbed(origin.asArray(), writer); } else { diff --git a/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/AttributeKeys.java b/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/AttributeKeys.java index 8277991edc..41e98378bf 100644 --- a/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/AttributeKeys.java +++ b/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/AttributeKeys.java @@ -8,7 +8,7 @@ package io.opentelemetry.instrumentation.netty.v4_1; import io.netty.util.AttributeKey; import io.opentelemetry.context.Context; -public class AttributeKeys { +public final class AttributeKeys { public static final AttributeKey CONNECT_CONTEXT = AttributeKey.valueOf(AttributeKeys.class, "connect-context"); @@ -26,4 +26,6 @@ public class AttributeKeys { public static final AttributeKey CLIENT_PARENT_CONTEXT = AttributeKey.valueOf(AttributeKeys.class, "client-parent-context"); + + private AttributeKeys() {} } diff --git a/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/ApplicationOpenTelemetry.java b/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/ApplicationOpenTelemetry.java index ac4617da56..91952282bd 100644 --- a/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/ApplicationOpenTelemetry.java +++ b/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/ApplicationOpenTelemetry.java @@ -11,6 +11,8 @@ import application.io.opentelemetry.context.propagation.ContextPropagators; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.propagation.ApplicationContextPropagators; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracerProvider; +// Our convention for accessing agent package +@SuppressWarnings("UnnecessarilyFullyQualified") public class ApplicationOpenTelemetry implements OpenTelemetry { public static final OpenTelemetry INSTANCE = new ApplicationOpenTelemetry(); diff --git a/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/OpenTelemetryInstrumentation.java b/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/OpenTelemetryInstrumentation.java index ee4c2f9bfc..be029841a6 100644 --- a/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/OpenTelemetryInstrumentation.java +++ b/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/OpenTelemetryInstrumentation.java @@ -16,6 +16,8 @@ import net.bytebuddy.asm.Advice; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; +// Our convention for accessing agent package +@SuppressWarnings("UnnecessarilyFullyQualified") public class OpenTelemetryInstrumentation implements TypeInstrumentation { @Override diff --git a/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/context/AgentContextStorage.java b/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/context/AgentContextStorage.java index 0f977a8332..88e4f5622d 100644 --- a/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/context/AgentContextStorage.java +++ b/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/context/AgentContextStorage.java @@ -14,6 +14,7 @@ import application.io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.baggage.BaggageBridging; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging; import java.lang.reflect.Field; +import org.checkerframework.checker.nullness.qual.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,6 +32,8 @@ import org.slf4j.LoggerFactory; * always stores and retrieves them from the agent context, even when accessed from the application. * All other accesses are to the concrete application context. */ +// Annotation doesn't work on some fields due to fully qualified name (no clue why it matters...) +@SuppressWarnings("FieldMissingNullable") public class AgentContextStorage implements ContextStorage, AutoCloseable { private static final Logger logger = LoggerFactory.getLogger(AgentContextStorage.class); @@ -53,11 +56,11 @@ public class AgentContextStorage implements ContextStorage, AutoCloseable { static final io.opentelemetry.context.ContextKey AGENT_SPAN_CONTEXT_KEY; - static final ContextKey APPLICATION_SPAN_CONTEXT_KEY; + @Nullable static final ContextKey APPLICATION_SPAN_CONTEXT_KEY; static final io.opentelemetry.context.ContextKey AGENT_BAGGAGE_CONTEXT_KEY; - static final ContextKey APPLICATION_BAGGAGE_CONTEXT_KEY; + @Nullable static final ContextKey APPLICATION_BAGGAGE_CONTEXT_KEY; static { io.opentelemetry.context.ContextKey agentSpanContextKey; diff --git a/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/Bridging.java b/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/Bridging.java index 5afcb02ff5..956a6ee99c 100644 --- a/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/Bridging.java +++ b/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/Bridging.java @@ -29,6 +29,8 @@ import org.slf4j.LoggerFactory; * *

Also see comments in this module's gradle file. */ +// Our convention for accessing agent package +@SuppressWarnings("UnnecessarilyFullyQualified") public class Bridging { private static final Logger log = LoggerFactory.getLogger(Bridging.class); @@ -135,10 +137,9 @@ public class Bridging { return io.opentelemetry.api.common.AttributeKey.longArrayKey(applicationKey.getKey()); case DOUBLE_ARRAY: return io.opentelemetry.api.common.AttributeKey.doubleArrayKey(applicationKey.getKey()); - default: - log.debug("unexpected attribute key type: {}", applicationKey.getType()); - return null; } + log.debug("unexpected attribute key type: {}", applicationKey.getType()); + return null; } public static io.opentelemetry.api.trace.StatusCode toAgent(StatusCode applicationStatus) { diff --git a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/OpenTelemetryMetricsInstrumentation.java b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/OpenTelemetryMetricsInstrumentation.java index 915f635034..b050d0884c 100644 --- a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/OpenTelemetryMetricsInstrumentation.java +++ b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/OpenTelemetryMetricsInstrumentation.java @@ -17,6 +17,8 @@ import net.bytebuddy.asm.Advice; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; +// Our convention for accessing agent package +@SuppressWarnings("UnnecessarilyFullyQualified") public class OpenTelemetryMetricsInstrumentation implements TypeInstrumentation { @Override diff --git a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationDoubleSumObserver.java b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationDoubleSumObserver.java index 302e9a3edd..4132ffac2e 100644 --- a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationDoubleSumObserver.java +++ b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationDoubleSumObserver.java @@ -10,6 +10,8 @@ import application.io.opentelemetry.api.metrics.DoubleSumObserverBuilder; import application.io.opentelemetry.api.metrics.common.Labels; import java.util.function.Consumer; +// For observers, which have no API, there might be a better pattern than wrapping. +@SuppressWarnings("FieldCanBeLocal") class ApplicationDoubleSumObserver implements DoubleSumObserver { private final io.opentelemetry.api.metrics.DoubleSumObserver agentDoubleSumObserver; diff --git a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationDoubleUpDownSumObserver.java b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationDoubleUpDownSumObserver.java index 8c043150f6..79e56cd4e6 100644 --- a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationDoubleUpDownSumObserver.java +++ b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationDoubleUpDownSumObserver.java @@ -10,6 +10,8 @@ import application.io.opentelemetry.api.metrics.DoubleUpDownSumObserverBuilder; import application.io.opentelemetry.api.metrics.common.Labels; import java.util.function.Consumer; +// For observers, which have no API, there might be a better pattern than wrapping. +@SuppressWarnings("FieldCanBeLocal") class ApplicationDoubleUpDownSumObserver implements DoubleUpDownSumObserver { private final io.opentelemetry.api.metrics.DoubleUpDownSumObserver agentDoubleUpDownSumObserver; diff --git a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationDoubleValueObserver.java b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationDoubleValueObserver.java index 903b39ac68..3ad425d2b3 100644 --- a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationDoubleValueObserver.java +++ b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationDoubleValueObserver.java @@ -10,6 +10,8 @@ import application.io.opentelemetry.api.metrics.DoubleValueObserverBuilder; import application.io.opentelemetry.api.metrics.common.Labels; import java.util.function.Consumer; +// For observers, which have no API, there might be a better pattern than wrapping. +@SuppressWarnings("FieldCanBeLocal") class ApplicationDoubleValueObserver implements DoubleValueObserver { private final io.opentelemetry.api.metrics.DoubleValueObserver agentDoubleValueObserver; diff --git a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationLongSumObserver.java b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationLongSumObserver.java index 58404113b6..18afb1dfc3 100644 --- a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationLongSumObserver.java +++ b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationLongSumObserver.java @@ -10,6 +10,8 @@ import application.io.opentelemetry.api.metrics.LongSumObserverBuilder; import application.io.opentelemetry.api.metrics.common.Labels; import java.util.function.Consumer; +// For observers, which have no API, there might be a better pattern than wrapping. +@SuppressWarnings("FieldCanBeLocal") class ApplicationLongSumObserver implements LongSumObserver { private final io.opentelemetry.api.metrics.LongSumObserver agentLongSumObserver; diff --git a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationLongUpDownSumObserver.java b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationLongUpDownSumObserver.java index 0729f336d6..f97fa46369 100644 --- a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationLongUpDownSumObserver.java +++ b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationLongUpDownSumObserver.java @@ -10,6 +10,8 @@ import application.io.opentelemetry.api.metrics.LongUpDownSumObserverBuilder; import application.io.opentelemetry.api.metrics.common.Labels; import java.util.function.Consumer; +// For observers, which have no API, there might be a better pattern than wrapping. +@SuppressWarnings("FieldCanBeLocal") class ApplicationLongUpDownSumObserver implements LongUpDownSumObserver { private final io.opentelemetry.api.metrics.LongUpDownSumObserver agentLongUpDownSumObserver; diff --git a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationLongValueObserver.java b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationLongValueObserver.java index 591d90623c..a5a0f57b1a 100644 --- a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationLongValueObserver.java +++ b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationLongValueObserver.java @@ -10,6 +10,8 @@ import application.io.opentelemetry.api.metrics.LongValueObserverBuilder; import application.io.opentelemetry.api.metrics.common.Labels; import java.util.function.Consumer; +// For observers, which have no API, there might be a better pattern than wrapping. +@SuppressWarnings("FieldCanBeLocal") class ApplicationLongValueObserver implements LongValueObserver { private final io.opentelemetry.api.metrics.LongValueObserver agentLongValueObserver; diff --git a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationMeterProvider.java b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationMeterProvider.java index af7f243b8f..761b99a498 100644 --- a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationMeterProvider.java +++ b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/bridge/ApplicationMeterProvider.java @@ -8,6 +8,8 @@ package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.metrics.brid import application.io.opentelemetry.api.metrics.Meter; import application.io.opentelemetry.api.metrics.MeterProvider; +// Our convention for accessing agent packages. +@SuppressWarnings("UnnecessarilyFullyQualified") public class ApplicationMeterProvider implements MeterProvider { public static final MeterProvider INSTANCE = new ApplicationMeterProvider(); diff --git a/instrumentation/oshi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oshi/OshiMetricsInstaller.java b/instrumentation/oshi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oshi/OshiMetricsInstaller.java index 5f0189e07e..bb87a7c1f6 100644 --- a/instrumentation/oshi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oshi/OshiMetricsInstaller.java +++ b/instrumentation/oshi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oshi/OshiMetricsInstaller.java @@ -19,7 +19,8 @@ import java.util.Collections; public class OshiMetricsInstaller implements ComponentInstaller { @Override public void afterByteBuddyAgent(Config config) { - if (config.isInstrumentationEnabled(Collections.singleton("oshi"), true)) { + if (config.isInstrumentationEnabled( + Collections.singleton("oshi"), /* defaultEnabled= */ true)) { try { // Call oshi.SystemInfo.getCurrentPlatformEnum() to activate SystemMetrics. // Oshi instrumentation will intercept this call and enable SystemMetrics. diff --git a/instrumentation/oshi/library/src/test/java/io/opentelemetry/instrumentation/oshi/ProcessMetricsTest.java b/instrumentation/oshi/library/src/test/java/io/opentelemetry/instrumentation/oshi/ProcessMetricsTest.java index af41df48fd..7f5e19c53c 100644 --- a/instrumentation/oshi/library/src/test/java/io/opentelemetry/instrumentation/oshi/ProcessMetricsTest.java +++ b/instrumentation/oshi/library/src/test/java/io/opentelemetry/instrumentation/oshi/ProcessMetricsTest.java @@ -19,7 +19,11 @@ public class ProcessMetricsTest extends AbstractMetricsTest { testMetricExporter.waitForData(); intervalMetricReader.shutdown(); - verify("runtime.java.memory", "bytes", MetricDataType.LONG_SUM, true); - verify("runtime.java.cpu_time", "seconds", MetricDataType.DOUBLE_GAUGE, true); + verify("runtime.java.memory", "bytes", MetricDataType.LONG_SUM, /* checkNonZeroValue= */ true); + verify( + "runtime.java.cpu_time", + "seconds", + MetricDataType.DOUBLE_GAUGE, + /* checkNonZeroValue= */ true); } } diff --git a/instrumentation/oshi/library/src/test/java/io/opentelemetry/instrumentation/oshi/SystemMetricsTest.java b/instrumentation/oshi/library/src/test/java/io/opentelemetry/instrumentation/oshi/SystemMetricsTest.java index 2eacb70961..4676222a3b 100644 --- a/instrumentation/oshi/library/src/test/java/io/opentelemetry/instrumentation/oshi/SystemMetricsTest.java +++ b/instrumentation/oshi/library/src/test/java/io/opentelemetry/instrumentation/oshi/SystemMetricsTest.java @@ -19,14 +19,27 @@ public class SystemMetricsTest extends AbstractMetricsTest { testMetricExporter.waitForData(); intervalMetricReader.shutdown(); - verify("system.memory.usage", "By", MetricDataType.LONG_SUM, true); - verify("system.memory.utilization", "1", MetricDataType.DOUBLE_GAUGE, true); + verify("system.memory.usage", "By", MetricDataType.LONG_SUM, /* checkNonZeroValue= */ true); + verify( + "system.memory.utilization", + "1", + MetricDataType.DOUBLE_GAUGE, + /* checkNonZeroValue= */ true); - verify("system.network.io", "By", MetricDataType.LONG_SUM, false); - verify("system.network.packets", "packets", MetricDataType.LONG_SUM, false); - verify("system.network.errors", "errors", MetricDataType.LONG_SUM, false); + verify("system.network.io", "By", MetricDataType.LONG_SUM, /* checkNonZeroValue= */ false); + verify( + "system.network.packets", + "packets", + MetricDataType.LONG_SUM, + /* checkNonZeroValue= */ false); + verify( + "system.network.errors", "errors", MetricDataType.LONG_SUM, /* checkNonZeroValue= */ false); - verify("system.disk.io", "By", MetricDataType.LONG_SUM, false); - verify("system.disk.operations", "operations", MetricDataType.LONG_SUM, false); + verify("system.disk.io", "By", MetricDataType.LONG_SUM, /* checkNonZeroValue= */ false); + verify( + "system.disk.operations", + "operations", + MetricDataType.LONG_SUM, + /* checkNonZeroValue= */ false); } } diff --git a/instrumentation/play/play-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/ActionInstrumentation.java b/instrumentation/play/play-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/ActionInstrumentation.java index b192e5045f..b56ae02d25 100644 --- a/instrumentation/play/play-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/ActionInstrumentation.java +++ b/instrumentation/play/play-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/ActionInstrumentation.java @@ -26,6 +26,7 @@ import play.api.mvc.Action; import play.api.mvc.Headers; import play.api.mvc.Request; import play.api.mvc.Result; +import play.libs.Akka; import scala.concurrent.Future; public class ActionInstrumentation implements TypeInstrumentation { @@ -86,7 +87,7 @@ public class ActionInstrumentation implements TypeInstrumentation { // This distinguishes between 2.3 and 2.4, excluding the former headers.get("aKey"); // system() method was removed in 2.6, so this line prevents from applying in play 2.6 - play.libs.Akka.system(); + Akka.system(); } } } diff --git a/instrumentation/play/play-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/RequestCompleteCallback.java b/instrumentation/play/play-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/RequestCompleteCallback.java index 64aeebe6e3..7a5f398ca5 100644 --- a/instrumentation/play/play-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/RequestCompleteCallback.java +++ b/instrumentation/play/play-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/RequestCompleteCallback.java @@ -11,9 +11,10 @@ import io.opentelemetry.context.Context; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import play.api.mvc.Result; +import scala.runtime.AbstractFunction1; import scala.util.Try; -public class RequestCompleteCallback extends scala.runtime.AbstractFunction1, Object> { +public class RequestCompleteCallback extends AbstractFunction1, Object> { private static final Logger log = LoggerFactory.getLogger(RequestCompleteCallback.class); diff --git a/instrumentation/play/play-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/PlayTracer.java b/instrumentation/play/play-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/PlayTracer.java index 8f43420703..de02704d51 100644 --- a/instrumentation/play/play-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/PlayTracer.java +++ b/instrumentation/play/play-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/PlayTracer.java @@ -9,6 +9,7 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.instrumentation.api.tracer.BaseTracer; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import org.checkerframework.checker.nullness.qual.Nullable; import play.api.mvc.Request; import play.api.routing.HandlerDef; import play.libs.typedmap.TypedKey; @@ -22,7 +23,7 @@ public class PlayTracer extends BaseTracer { return TRACER; } - private static final Method typedKeyGetUnderlying; + @Nullable private static final Method typedKeyGetUnderlying; static { Method typedKeyGetUnderlyingCheck = null; diff --git a/instrumentation/play/play-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/RequestCompleteCallback.java b/instrumentation/play/play-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/RequestCompleteCallback.java index 0a0adda37a..841b6b7f44 100644 --- a/instrumentation/play/play-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/RequestCompleteCallback.java +++ b/instrumentation/play/play-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/RequestCompleteCallback.java @@ -11,9 +11,10 @@ import io.opentelemetry.context.Context; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import play.api.mvc.Result; +import scala.runtime.AbstractFunction1; import scala.util.Try; -public class RequestCompleteCallback extends scala.runtime.AbstractFunction1, Object> { +public class RequestCompleteCallback extends AbstractFunction1, Object> { private static final Logger log = LoggerFactory.getLogger(RequestCompleteCallback.class); diff --git a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitCommandInstrumentation.java b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitCommandInstrumentation.java index f30ab32ce2..bf16ae4eab 100644 --- a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitCommandInstrumentation.java +++ b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitCommandInstrumentation.java @@ -8,7 +8,6 @@ package io.opentelemetry.javaagent.instrumentation.rabbitmq; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.rabbitmq.RabbitCommandInstrumentation.SpanHolder.CURRENT_RABBIT_CONTEXT; -import static io.opentelemetry.javaagent.instrumentation.rabbitmq.RabbitTracer.tracer; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -50,7 +49,7 @@ public class RabbitCommandInstrumentation implements TypeInstrumentation { Context context = CURRENT_RABBIT_CONTEXT.get(); if (context != null && command.getMethod() != null) { - tracer().onCommand(Java8BytecodeBridge.spanFromContext(context), command); + RabbitTracer.onCommand(Java8BytecodeBridge.spanFromContext(context), command); } } } diff --git a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitTracer.java b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitTracer.java index 34594acda3..a3243d5b47 100644 --- a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitTracer.java +++ b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitTracer.java @@ -9,7 +9,6 @@ import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.api.trace.SpanKind.CONSUMER; import static io.opentelemetry.api.trace.SpanKind.PRODUCER; import static io.opentelemetry.javaagent.instrumentation.rabbitmq.TextMapExtractAdapter.GETTER; -import static java.util.concurrent.TimeUnit.NANOSECONDS; import com.rabbitmq.client.AMQP; import com.rabbitmq.client.Command; @@ -103,9 +102,9 @@ public class RabbitTracer extends BaseTracer { if (CAPTURE_EXPERIMENTAL_SPAN_ATTRIBUTES && properties.getTimestamp() != null) { // this will be set if the sender sets the timestamp, // or if a plugin is installed on the rabbitmq broker - long produceTime = properties.getTimestamp().getTime(); - long consumeTime = NANOSECONDS.toMillis(startTimeMillis); - span.setAttribute("rabbitmq.record.queue_time_ms", Math.max(0L, consumeTime - produceTime)); + long produceTimeMillis = properties.getTimestamp().getTime(); + span.setAttribute( + "rabbitmq.record.queue_time_ms", Math.max(0L, startTimeMillis - produceTimeMillis)); } return parentContext.with(span); @@ -165,11 +164,11 @@ public class RabbitTracer extends BaseTracer { } } - private String normalizeExchangeName(String exchange) { + private static String normalizeExchangeName(String exchange) { return exchange == null || exchange.isEmpty() ? "" : exchange; } - public void onCommand(Span span, Command command) { + public static void onCommand(Span span, Command command) { String name = command.getMethod().protocolMethodName(); if (!name.equals("basic.publish")) { diff --git a/instrumentation/reactor-3.1/library/src/main/java/io/opentelemetry/instrumentation/reactor/TracingOperator.java b/instrumentation/reactor-3.1/library/src/main/java/io/opentelemetry/instrumentation/reactor/TracingOperator.java index 53dc2bf3af..5c56652e98 100644 --- a/instrumentation/reactor-3.1/library/src/main/java/io/opentelemetry/instrumentation/reactor/TracingOperator.java +++ b/instrumentation/reactor-3.1/library/src/main/java/io/opentelemetry/instrumentation/reactor/TracingOperator.java @@ -34,7 +34,7 @@ import reactor.core.publisher.Hooks; import reactor.core.publisher.Operators; /** Based on Spring Sleuth's Reactor instrumentation. */ -public class TracingOperator { +public final class TracingOperator { /** * Registers a hook that applies to every operator, propagating {@link Context} to downstream @@ -69,4 +69,6 @@ public class TracingOperator { return new TracingSubscriber<>(sub, sub.currentContext()); } } + + private TracingOperator() {} } diff --git a/instrumentation/reactor-3.1/testing/src/main/groovy/io/opentelemetry/instrumentation/reactor/AbstractReactorCoreTest.groovy b/instrumentation/reactor-3.1/testing/src/main/groovy/io/opentelemetry/instrumentation/reactor/AbstractReactorCoreTest.groovy index 7a9dde4ae3..b3c002e489 100644 --- a/instrumentation/reactor-3.1/testing/src/main/groovy/io/opentelemetry/instrumentation/reactor/AbstractReactorCoreTest.groovy +++ b/instrumentation/reactor-3.1/testing/src/main/groovy/io/opentelemetry/instrumentation/reactor/AbstractReactorCoreTest.groovy @@ -39,7 +39,7 @@ abstract class AbstractReactorCoreTest extends InstrumentationSpecification { @Shared def throwException = { - throw new RuntimeException(EXCEPTION_MESSAGE) + throw new IllegalStateException(EXCEPTION_MESSAGE) } def "Publisher '#paramName' test"() { @@ -122,7 +122,7 @@ abstract class AbstractReactorCoreTest extends InstrumentationSpecification { runUnderTrace(publisherSupplier) then: - def exception = thrown RuntimeException + def exception = thrown IllegalStateException exception.message == EXCEPTION_MESSAGE and: assertTraces(1) { @@ -130,7 +130,7 @@ abstract class AbstractReactorCoreTest extends InstrumentationSpecification { span(0) { name "trace-parent" status ERROR - errorEvent(RuntimeException, EXCEPTION_MESSAGE) + errorEvent(IllegalStateException, EXCEPTION_MESSAGE) hasNoParent() } @@ -277,7 +277,7 @@ abstract class AbstractReactorCoreTest extends InstrumentationSpecification { return publisher.toStream().toArray({ size -> new Integer[size] }) } - throw new RuntimeException("Unknown publisher: " + publisher) + throw new IllegalStateException("Unknown publisher: " + publisher) } finally { span.end() scope.close() diff --git a/instrumentation/reactor-netty/reactor-netty-0.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v0_9/DecoratorFunctions.java b/instrumentation/reactor-netty/reactor-netty-0.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v0_9/DecoratorFunctions.java index c3d92beaee..1f92e26fb0 100644 --- a/instrumentation/reactor-netty/reactor-netty-0.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v0_9/DecoratorFunctions.java +++ b/instrumentation/reactor-netty/reactor-netty-0.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v0_9/DecoratorFunctions.java @@ -55,7 +55,7 @@ public final class DecoratorFunctions { public static final class OnRequestDecorator extends OnMessageDecorator { public OnRequestDecorator(BiConsumer delegate) { - super(delegate, false); + super(delegate, /* forceParentContext= */ false); } @Override diff --git a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/ContextPropagator.java b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/ContextPropagator.java index 0d73867d2c..5eeaecadc8 100644 --- a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/ContextPropagator.java +++ b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/ContextPropagator.java @@ -56,7 +56,7 @@ public class ContextPropagator { } } - private boolean checkIfContextCanBePassed( + private static boolean checkIfContextCanBePassed( ContextStore knownConnections, Connection c) { Boolean storedResult = knownConnections.get(c); if (storedResult != null) { @@ -69,7 +69,7 @@ public class ContextPropagator { } /** Returns true when no error happened during call. */ - private boolean syntheticCall(Connection c, ContextPayload payload, int operationId) { + private static boolean syntheticCall(Connection c, ContextPayload payload, int operationId) { StreamRemoteCall shareContextCall = new StreamRemoteCall(c); try { c.getOutputStream().write(TransportConstants.Call); diff --git a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/server/ContextDispatcher.java b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/server/ContextDispatcher.java index 516099e266..78eee03ac8 100644 --- a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/server/ContextDispatcher.java +++ b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/server/ContextDispatcher.java @@ -38,7 +38,8 @@ public class ContextDispatcher implements Dispatcher { private static final NoopRemote NOOP_REMOTE = new NoopRemote(); public static Target newDispatcherTarget() { - return new Target(NOOP_REMOTE, CONTEXT_DISPATCHER, NOOP_REMOTE, CONTEXT_CALL_ID, false); + return new Target( + NOOP_REMOTE, CONTEXT_DISPATCHER, NOOP_REMOTE, CONTEXT_CALL_ID, /* permanent= */ false); } @Override diff --git a/instrumentation/rmi/javaagent/src/test/groovy/RmiTest.groovy b/instrumentation/rmi/javaagent/src/test/groovy/RmiTest.groovy index 8b1ba6d18b..af79296657 100644 --- a/instrumentation/rmi/javaagent/src/test/groovy/RmiTest.groovy +++ b/instrumentation/rmi/javaagent/src/test/groovy/RmiTest.groovy @@ -100,7 +100,7 @@ class RmiTest extends AgentInstrumentationSpecification { } then: - def thrownException = thrown(RuntimeException) + def thrownException = thrown(IllegalStateException) assertTraces(1) { trace(0, 3) { basicSpan(it, 0, "parent", null, thrownException) @@ -109,7 +109,7 @@ class RmiTest extends AgentInstrumentationSpecification { kind CLIENT childOf span(0) status ERROR - errorEvent(RuntimeException, String) + errorEvent(IllegalStateException, String) attributes { "${SemanticAttributes.RPC_SYSTEM.key}" "java_rmi" "${SemanticAttributes.RPC_SERVICE.key}" "rmi.app.Greeter" @@ -121,7 +121,7 @@ class RmiTest extends AgentInstrumentationSpecification { name "rmi.app.Server/exceptional" kind SERVER status ERROR - errorEvent(RuntimeException, String) + errorEvent(IllegalStateException, String) attributes { "${SemanticAttributes.RPC_SYSTEM.key}" "java_rmi" "${SemanticAttributes.RPC_SERVICE.key}" "rmi.app.Server" diff --git a/instrumentation/rmi/javaagent/src/test/java/rmi/app/Greeter.java b/instrumentation/rmi/javaagent/src/test/java/rmi/app/Greeter.java index 57c715b101..70bc3f747e 100644 --- a/instrumentation/rmi/javaagent/src/test/java/rmi/app/Greeter.java +++ b/instrumentation/rmi/javaagent/src/test/java/rmi/app/Greeter.java @@ -11,5 +11,5 @@ import java.rmi.RemoteException; public interface Greeter extends Remote { String hello(String name) throws RemoteException; - void exceptional() throws RemoteException, RuntimeException; + void exceptional() throws RemoteException; } diff --git a/instrumentation/rmi/javaagent/src/test/java/rmi/app/Server.java b/instrumentation/rmi/javaagent/src/test/java/rmi/app/Server.java index 6ba5de00c9..0e88c0c2b8 100644 --- a/instrumentation/rmi/javaagent/src/test/java/rmi/app/Server.java +++ b/instrumentation/rmi/javaagent/src/test/java/rmi/app/Server.java @@ -9,6 +9,7 @@ import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class Server extends UnicastRemoteObject implements Greeter { + @SuppressWarnings("ConstantField") public static String RMI_ID = Server.class.getSimpleName(); private static final long serialVersionUID = 1L; @@ -27,7 +28,7 @@ public class Server extends UnicastRemoteObject implements Greeter { } @Override - public void exceptional() throws RuntimeException { - throw new RuntimeException("expected"); + public void exceptional() { + throw new IllegalStateException("expected"); } } diff --git a/instrumentation/rmi/javaagent/src/test/java/rmi/app/ServerLegacy.java b/instrumentation/rmi/javaagent/src/test/java/rmi/app/ServerLegacy.java index 5defe9b4a2..fc9819f02b 100644 --- a/instrumentation/rmi/javaagent/src/test/java/rmi/app/ServerLegacy.java +++ b/instrumentation/rmi/javaagent/src/test/java/rmi/app/ServerLegacy.java @@ -9,6 +9,7 @@ import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class ServerLegacy extends UnicastRemoteObject implements Greeter { + @SuppressWarnings("ConstantField") static String RMI_ID = ServerLegacy.class.getSimpleName(); private static final long serialVersionUID = 1L; @@ -23,7 +24,7 @@ public class ServerLegacy extends UnicastRemoteObject implements Greeter { } @Override - public void exceptional() throws RuntimeException { - throw new RuntimeException("expected"); + public void exceptional() { + throw new IllegalStateException("expected"); } } diff --git a/instrumentation/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmq/RocketMqConsumerTracer.java b/instrumentation/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmq/RocketMqConsumerTracer.java index cad1678515..e7286bce83 100644 --- a/instrumentation/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmq/RocketMqConsumerTracer.java +++ b/instrumentation/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmq/RocketMqConsumerTracer.java @@ -20,8 +20,8 @@ import org.checkerframework.checker.nullness.qual.Nullable; final class RocketMqConsumerTracer extends BaseTracer { - private boolean captureExperimentalSpanAttributes; - private boolean propagationEnabled; + private final boolean captureExperimentalSpanAttributes; + private final boolean propagationEnabled; RocketMqConsumerTracer( OpenTelemetry openTelemetry, @@ -93,12 +93,12 @@ final class RocketMqConsumerTracer extends BaseTracer { } } - private String spanNameOnConsume(MessageExt msg) { + private static String spanNameOnConsume(MessageExt msg) { return msg.getTopic() + " process"; } @Nullable - private String getBrokerHost(MessageExt msg) { + private static String getBrokerHost(MessageExt msg) { if (msg.getStoreHost() != null) { return msg.getStoreHost().toString().replace("/", ""); } else { diff --git a/instrumentation/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmq/RocketMqProducerTracer.java b/instrumentation/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmq/RocketMqProducerTracer.java index 607367f847..613462f511 100644 --- a/instrumentation/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmq/RocketMqProducerTracer.java +++ b/instrumentation/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmq/RocketMqProducerTracer.java @@ -18,7 +18,7 @@ import org.apache.rocketmq.common.message.Message; final class RocketMqProducerTracer extends BaseTracer { - private boolean captureExperimentalSpanAttributes; + private final boolean captureExperimentalSpanAttributes; RocketMqProducerTracer(OpenTelemetry openTelemetry, boolean captureExperimentalSpanAttributes) { super(openTelemetry); @@ -54,7 +54,7 @@ final class RocketMqProducerTracer extends BaseTracer { } } - private String spanNameOnProduce(Message msg) { + private static String spanNameOnProduce(Message msg) { return msg.getTopic() + " send"; } } diff --git a/instrumentation/rocketmq-client-4.8/testing/src/main/java/base/IntegrationTestBase.java b/instrumentation/rocketmq-client-4.8/testing/src/main/java/base/IntegrationTestBase.java index 011a13a119..53107a3979 100644 --- a/instrumentation/rocketmq-client-4.8/testing/src/main/java/base/IntegrationTestBase.java +++ b/instrumentation/rocketmq-client-4.8/testing/src/main/java/base/IntegrationTestBase.java @@ -26,17 +26,17 @@ import org.apache.rocketmq.store.config.MessageStoreConfig; import org.apache.rocketmq.test.util.MQAdmin; import org.junit.Assert; -public class IntegrationTestBase { +public final class IntegrationTestBase { public static final InternalLogger logger = InternalLoggerFactory.getLogger(IntegrationTestBase.class); - protected static final String BROKER_NAME_PREFIX = "TestBrokerName_"; - protected static final AtomicInteger BROKER_INDEX = new AtomicInteger(0); - protected static final List TMPE_FILES = new ArrayList<>(); - protected static final List BROKER_CONTROLLERS = new ArrayList<>(); - protected static final List NAMESRV_CONTROLLERS = new ArrayList<>(); - protected static final int COMMIT_LOG_SIZE = 1024 * 1024 * 100; - protected static final int INDEX_NUM = 1000; + static final String BROKER_NAME_PREFIX = "TestBrokerName_"; + static final AtomicInteger BROKER_INDEX = new AtomicInteger(0); + static final List TMPE_FILES = new ArrayList<>(); + static final List BROKER_CONTROLLERS = new ArrayList<>(); + static final List NAMESRV_CONTROLLERS = new ArrayList<>(); + static final int COMMIT_LOG_SIZE = 1024 * 1024 * 100; + static final int INDEX_NUM = 1000; private static String createTempDir() { String path = null; @@ -130,4 +130,6 @@ public class IntegrationTestBase { public static void initTopic(String topic, String nsAddr, String clusterName) { MQAdmin.createTopic(nsAddr, clusterName, topic, 20); } + + private IntegrationTestBase() {} } diff --git a/instrumentation/runtime-metrics/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/RuntimeMetricsInstaller.java b/instrumentation/runtime-metrics/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/RuntimeMetricsInstaller.java index c5a799ecec..c0671fb635 100644 --- a/instrumentation/runtime-metrics/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/RuntimeMetricsInstaller.java +++ b/instrumentation/runtime-metrics/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/RuntimeMetricsInstaller.java @@ -17,7 +17,8 @@ import java.util.Collections; public class RuntimeMetricsInstaller implements ComponentInstaller { @Override public void afterByteBuddyAgent(Config config) { - if (config.isInstrumentationEnabled(Collections.singleton("runtime-metrics"), true)) { + if (config.isInstrumentationEnabled( + Collections.singleton("runtime-metrics"), /* defaultEnabled= */ true)) { GarbageCollector.registerObservers(); MemoryPools.registerObservers(); } diff --git a/instrumentation/rxjava/rxjava-1.0/library/src/main/java/rx/__OpenTelemetryTracingUtil.java b/instrumentation/rxjava/rxjava-1.0/library/src/main/java/rx/__OpenTelemetryTracingUtil.java index 55c34d6130..647d6d9e80 100644 --- a/instrumentation/rxjava/rxjava-1.0/library/src/main/java/rx/__OpenTelemetryTracingUtil.java +++ b/instrumentation/rxjava/rxjava-1.0/library/src/main/java/rx/__OpenTelemetryTracingUtil.java @@ -9,8 +9,10 @@ package rx; * This class must be in the rx package in order to access the package accessible onSubscribe field. */ @SuppressWarnings("checkstyle:TypeName") -public class __OpenTelemetryTracingUtil { +public final class __OpenTelemetryTracingUtil { public static Observable.OnSubscribe extractOnSubscribe(Observable observable) { return observable.onSubscribe; } + + private __OpenTelemetryTracingUtil() {} } diff --git a/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava2/RxJava2AsyncSpanEndStrategy.java b/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava2/RxJava2AsyncSpanEndStrategy.java index 7231447ab4..495b9d8888 100644 --- a/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava2/RxJava2AsyncSpanEndStrategy.java +++ b/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava2/RxJava2AsyncSpanEndStrategy.java @@ -53,12 +53,12 @@ public enum RxJava2AsyncSpanEndStrategy implements AsyncSpanEndStrategy { return endWhenPublisherComplete((Publisher) returnValue, notificationConsumer); } - private Completable endWhenComplete( + private static Completable endWhenComplete( Completable completable, EndOnFirstNotificationConsumer notificationConsumer) { return completable.doOnEvent(notificationConsumer); } - private Maybe endWhenMaybeComplete( + private static Maybe endWhenMaybeComplete( Maybe maybe, EndOnFirstNotificationConsumer notificationConsumer) { @SuppressWarnings("unchecked") EndOnFirstNotificationConsumer typedConsumer = @@ -66,7 +66,7 @@ public enum RxJava2AsyncSpanEndStrategy implements AsyncSpanEndStrategy { return maybe.doOnEvent(typedConsumer); } - private Single endWhenSingleComplete( + private static Single endWhenSingleComplete( Single single, EndOnFirstNotificationConsumer notificationConsumer) { @SuppressWarnings("unchecked") EndOnFirstNotificationConsumer typedConsumer = @@ -74,18 +74,18 @@ public enum RxJava2AsyncSpanEndStrategy implements AsyncSpanEndStrategy { return single.doOnEvent(typedConsumer); } - private Observable endWhenObservableComplete( + private static Observable endWhenObservableComplete( Observable observable, EndOnFirstNotificationConsumer notificationConsumer) { return observable.doOnComplete(notificationConsumer).doOnError(notificationConsumer); } - private ParallelFlowable endWhenFirstComplete( + private static ParallelFlowable endWhenFirstComplete( ParallelFlowable parallelFlowable, EndOnFirstNotificationConsumer notificationConsumer) { return parallelFlowable.doOnComplete(notificationConsumer).doOnError(notificationConsumer); } - private Flowable endWhenPublisherComplete( + private static Flowable endWhenPublisherComplete( Publisher publisher, EndOnFirstNotificationConsumer notificationConsumer) { return Flowable.fromPublisher(publisher) .doOnComplete(notificationConsumer) diff --git a/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava2/TracingAssembly.java b/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava2/TracingAssembly.java index af9cbd3b8c..c7d40c5c76 100644 --- a/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava2/TracingAssembly.java +++ b/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava2/TracingAssembly.java @@ -40,6 +40,7 @@ import io.reactivex.internal.fuseable.ConditionalSubscriber; import io.reactivex.parallel.ParallelFlowable; import io.reactivex.plugins.RxJavaPlugins; import org.checkerframework.checker.lock.qual.GuardedBy; +import org.checkerframework.checker.nullness.qual.Nullable; import org.reactivestreams.Subscriber; /** @@ -57,32 +58,38 @@ public final class TracingAssembly { @SuppressWarnings("rawtypes") @GuardedBy("TracingAssembly.class") + @Nullable private static BiFunction oldOnObservableSubscribe; @SuppressWarnings("rawtypes") @GuardedBy("TracingAssembly.class") + @Nullable private static BiFunction< ? super Completable, ? super CompletableObserver, ? extends CompletableObserver> oldOnCompletableSubscribe; @SuppressWarnings("rawtypes") @GuardedBy("TracingAssembly.class") + @Nullable private static BiFunction oldOnSingleSubscribe; @SuppressWarnings("rawtypes") @GuardedBy("TracingAssembly.class") + @Nullable private static BiFunction oldOnMaybeSubscribe; @SuppressWarnings("rawtypes") @GuardedBy("TracingAssembly.class") + @Nullable private static BiFunction oldOnFlowableSubscribe; @SuppressWarnings("rawtypes") @GuardedBy("TracingAssembly.class") + @Nullable private static Function oldOnParallelAssembly; diff --git a/instrumentation/rxjava/rxjava-2.0/testing/src/main/groovy/io/opentelemetry/instrumentation/rxjava2/AbstractRxJava2Test.groovy b/instrumentation/rxjava/rxjava-2.0/testing/src/main/groovy/io/opentelemetry/instrumentation/rxjava2/AbstractRxJava2Test.groovy index 37078b545e..d2f9ca54c7 100644 --- a/instrumentation/rxjava/rxjava-2.0/testing/src/main/groovy/io/opentelemetry/instrumentation/rxjava2/AbstractRxJava2Test.groovy +++ b/instrumentation/rxjava/rxjava-2.0/testing/src/main/groovy/io/opentelemetry/instrumentation/rxjava2/AbstractRxJava2Test.groovy @@ -51,7 +51,7 @@ abstract class AbstractRxJava2Test extends InstrumentationSpecification { @Shared def throwException = { - throw new RuntimeException(EXCEPTION_MESSAGE) + throw new IllegalStateException(EXCEPTION_MESSAGE) } static addOneFunc(int i) { @@ -406,7 +406,7 @@ abstract class AbstractRxJava2Test extends InstrumentationSpecification { return ((Completable) publisher).toMaybe().blockingGet() } - throw new RuntimeException("Unknown publisher: " + publisher) + throw new IllegalStateException("Unknown publisher: " + publisher) } } } diff --git a/instrumentation/rxjava/rxjava-2.0/testing/src/main/groovy/io/opentelemetry/instrumentation/rxjava2/RxJava2ConcurrencyTestHelper.java b/instrumentation/rxjava/rxjava-2.0/testing/src/main/groovy/io/opentelemetry/instrumentation/rxjava2/RxJava2ConcurrencyTestHelper.java index cd57275a94..8884ecbcaf 100644 --- a/instrumentation/rxjava/rxjava-2.0/testing/src/main/groovy/io/opentelemetry/instrumentation/rxjava2/RxJava2ConcurrencyTestHelper.java +++ b/instrumentation/rxjava/rxjava-2.0/testing/src/main/groovy/io/opentelemetry/instrumentation/rxjava2/RxJava2ConcurrencyTestHelper.java @@ -35,7 +35,7 @@ public class RxJava2ConcurrencyTestHelper { //noinspection ResultOfMethodCallIgnored latch.await(timeoutMillis, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } } diff --git a/instrumentation/rxjava/rxjava-3.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava3/RxJava3AsyncSpanEndStrategy.java b/instrumentation/rxjava/rxjava-3.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava3/RxJava3AsyncSpanEndStrategy.java index b62f638af2..c2aecbc191 100644 --- a/instrumentation/rxjava/rxjava-3.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava3/RxJava3AsyncSpanEndStrategy.java +++ b/instrumentation/rxjava/rxjava-3.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava3/RxJava3AsyncSpanEndStrategy.java @@ -53,12 +53,12 @@ public enum RxJava3AsyncSpanEndStrategy implements AsyncSpanEndStrategy { return endWhenPublisherComplete((Publisher) returnValue, notificationConsumer); } - private Completable endWhenComplete( + private static Completable endWhenComplete( Completable completable, EndOnFirstNotificationConsumer notificationConsumer) { return completable.doOnEvent(notificationConsumer); } - private Maybe endWhenMaybeComplete( + private static Maybe endWhenMaybeComplete( Maybe maybe, EndOnFirstNotificationConsumer notificationConsumer) { @SuppressWarnings("unchecked") EndOnFirstNotificationConsumer typedConsumer = @@ -66,7 +66,7 @@ public enum RxJava3AsyncSpanEndStrategy implements AsyncSpanEndStrategy { return maybe.doOnEvent(typedConsumer); } - private Single endWhenSingleComplete( + private static Single endWhenSingleComplete( Single single, EndOnFirstNotificationConsumer notificationConsumer) { @SuppressWarnings("unchecked") EndOnFirstNotificationConsumer typedConsumer = @@ -74,18 +74,18 @@ public enum RxJava3AsyncSpanEndStrategy implements AsyncSpanEndStrategy { return single.doOnEvent(typedConsumer); } - private Observable endWhenObservableComplete( + private static Observable endWhenObservableComplete( Observable observable, EndOnFirstNotificationConsumer notificationConsumer) { return observable.doOnComplete(notificationConsumer).doOnError(notificationConsumer); } - private ParallelFlowable endWhenFirstComplete( + private static ParallelFlowable endWhenFirstComplete( ParallelFlowable parallelFlowable, EndOnFirstNotificationConsumer notificationConsumer) { return parallelFlowable.doOnComplete(notificationConsumer).doOnError(notificationConsumer); } - private Flowable endWhenPublisherComplete( + private static Flowable endWhenPublisherComplete( Publisher publisher, EndOnFirstNotificationConsumer notificationConsumer) { return Flowable.fromPublisher(publisher) .doOnComplete(notificationConsumer) diff --git a/instrumentation/rxjava/rxjava-3.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava3/TracingAssembly.java b/instrumentation/rxjava/rxjava-3.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava3/TracingAssembly.java index 5242cf22f8..eb400a6297 100644 --- a/instrumentation/rxjava/rxjava-3.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava3/TracingAssembly.java +++ b/instrumentation/rxjava/rxjava-3.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava3/TracingAssembly.java @@ -40,6 +40,7 @@ import io.reactivex.rxjava3.internal.fuseable.ConditionalSubscriber; import io.reactivex.rxjava3.parallel.ParallelFlowable; import io.reactivex.rxjava3.plugins.RxJavaPlugins; import org.checkerframework.checker.lock.qual.GuardedBy; +import org.checkerframework.checker.nullness.qual.Nullable; import org.reactivestreams.Subscriber; /** @@ -57,32 +58,38 @@ public final class TracingAssembly { @SuppressWarnings("rawtypes") @GuardedBy("TracingAssembly.class") + @Nullable private static BiFunction oldOnObservableSubscribe; @SuppressWarnings("rawtypes") @GuardedBy("TracingAssembly.class") + @Nullable private static BiFunction< ? super Completable, ? super CompletableObserver, ? extends CompletableObserver> oldOnCompletableSubscribe; @SuppressWarnings("rawtypes") @GuardedBy("TracingAssembly.class") + @Nullable private static BiFunction oldOnSingleSubscribe; @SuppressWarnings("rawtypes") @GuardedBy("TracingAssembly.class") + @Nullable private static BiFunction oldOnMaybeSubscribe; @SuppressWarnings("rawtypes") @GuardedBy("TracingAssembly.class") + @Nullable private static BiFunction oldOnFlowableSubscribe; @SuppressWarnings("rawtypes") @GuardedBy("TracingAssembly.class") + @Nullable private static Function oldOnParallelAssembly; diff --git a/instrumentation/rxjava/rxjava-3.0/testing/src/main/groovy/io/opentelemetry/instrumentation/rxjava3/AbstractRxJava3Test.groovy b/instrumentation/rxjava/rxjava-3.0/testing/src/main/groovy/io/opentelemetry/instrumentation/rxjava3/AbstractRxJava3Test.groovy index 80712ec561..a7b10bd490 100644 --- a/instrumentation/rxjava/rxjava-3.0/testing/src/main/groovy/io/opentelemetry/instrumentation/rxjava3/AbstractRxJava3Test.groovy +++ b/instrumentation/rxjava/rxjava-3.0/testing/src/main/groovy/io/opentelemetry/instrumentation/rxjava3/AbstractRxJava3Test.groovy @@ -51,7 +51,7 @@ abstract class AbstractRxJava3Test extends InstrumentationSpecification { @Shared def throwException = { - throw new RuntimeException(EXCEPTION_MESSAGE) + throw new IllegalStateException(EXCEPTION_MESSAGE) } static addOneFunc(int i) { @@ -406,7 +406,7 @@ abstract class AbstractRxJava3Test extends InstrumentationSpecification { return ((Completable) publisher).toMaybe().blockingGet() } - throw new RuntimeException("Unknown publisher: " + publisher) + throw new IllegalStateException("Unknown publisher: " + publisher) } } } diff --git a/instrumentation/rxjava/rxjava-3.0/testing/src/main/groovy/io/opentelemetry/instrumentation/rxjava3/RxJava3ConcurrencyTestHelper.java b/instrumentation/rxjava/rxjava-3.0/testing/src/main/groovy/io/opentelemetry/instrumentation/rxjava3/RxJava3ConcurrencyTestHelper.java index 83824352a3..bdcd4ef5dd 100644 --- a/instrumentation/rxjava/rxjava-3.0/testing/src/main/groovy/io/opentelemetry/instrumentation/rxjava3/RxJava3ConcurrencyTestHelper.java +++ b/instrumentation/rxjava/rxjava-3.0/testing/src/main/groovy/io/opentelemetry/instrumentation/rxjava3/RxJava3ConcurrencyTestHelper.java @@ -35,7 +35,7 @@ public class RxJava3ConcurrencyTestHelper { //noinspection ResultOfMethodCallIgnored latch.await(timeoutMillis, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } } diff --git a/instrumentation/scala-executors/javaagent/src/test/java/ScalaAsyncChild.java b/instrumentation/scala-executors/javaagent/src/test/java/ScalaAsyncChild.java index d8f39aac73..26eeb390a8 100644 --- a/instrumentation/scala-executors/javaagent/src/test/java/ScalaAsyncChild.java +++ b/instrumentation/scala-executors/javaagent/src/test/java/ScalaAsyncChild.java @@ -18,7 +18,12 @@ public class ScalaAsyncChild extends ForkJoinTask implements Runnable, Callable private final CountDownLatch latch = new CountDownLatch(1); public ScalaAsyncChild() { - this(true, false); + this(/* doTraceableWork= */ true, /* blockThread= */ false); + } + + public ScalaAsyncChild(boolean doTraceableWork, boolean blockThread) { + this.doTraceableWork = doTraceableWork; + this.blockThread = new AtomicBoolean(blockThread); } @Override @@ -35,11 +40,6 @@ public class ScalaAsyncChild extends ForkJoinTask implements Runnable, Callable return true; } - public ScalaAsyncChild(boolean doTraceableWork, boolean blockThread) { - this.doTraceableWork = doTraceableWork; - this.blockThread = new AtomicBoolean(blockThread); - } - public void unblock() { blockThread.set(false); } @@ -69,7 +69,7 @@ public class ScalaAsyncChild extends ForkJoinTask implements Runnable, Callable latch.countDown(); } - private void asyncChild() { + private static void asyncChild() { tracer.spanBuilder("asyncChild").startSpan().end(); } } diff --git a/instrumentation/scala-executors/javaagent/src/test/scala/ScalaConcurrentTests.scala b/instrumentation/scala-executors/javaagent/src/test/scala/ScalaConcurrentTests.scala index b4aae86402..4da735ff09 100644 --- a/instrumentation/scala-executors/javaagent/src/test/scala/ScalaConcurrentTests.scala +++ b/instrumentation/scala-executors/javaagent/src/test/scala/ScalaConcurrentTests.scala @@ -34,7 +34,7 @@ class ScalaConcurrentTests { } val badFuture: Future[Integer] = Future { tracedChild("badFuture") - throw new RuntimeException("Uh-oh") + throw new IllegalStateException("Uh-oh") } badFuture onFailure { case t: Throwable => { diff --git a/instrumentation/spark-2.3/javaagent/src/test/java/TestSparkJavaApplication.java b/instrumentation/spark-2.3/javaagent/src/test/java/TestSparkJavaApplication.java index 4b5bb1e990..da146bde5e 100644 --- a/instrumentation/spark-2.3/javaagent/src/test/java/TestSparkJavaApplication.java +++ b/instrumentation/spark-2.3/javaagent/src/test/java/TestSparkJavaApplication.java @@ -16,7 +16,7 @@ public class TestSparkJavaApplication { Spark.get( "/exception/:param", (req, res) -> { - throw new RuntimeException(req.params("param")); + throw new IllegalStateException(req.params("param")); }); Spark.awaitInitialization(); diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/SpringBatchInstrumentationConfig.java b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/SpringBatchInstrumentationConfig.java index 060c1a3633..fe6ff8a5de 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/SpringBatchInstrumentationConfig.java +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/SpringBatchInstrumentationConfig.java @@ -17,11 +17,13 @@ public final class SpringBatchInstrumentationConfig { // the item level instrumentation is very chatty so it's disabled by default private static final boolean ITEM_TRACING_ENABLED = - Config.get().isInstrumentationPropertyEnabled(instrumentationNames(), "item.enabled", false); + Config.get() + .isInstrumentationPropertyEnabled( + instrumentationNames(), "item.enabled", /* defaultEnabled= */ false); private static final boolean CREATE_ROOT_SPAN_FOR_CHUNK = Config.get() .isInstrumentationPropertyEnabled( - instrumentationNames(), "experimental.chunk.new-trace", false); + instrumentationNames(), "experimental.chunk.new-trace", /* defaultEnabled= */ false); public static List instrumentationNames() { return INSTRUMENTATION_NAMES; diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/chunk/ChunkExecutionTracer.java b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/chunk/ChunkExecutionTracer.java index 650bb4feac..6993e2e269 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/chunk/ChunkExecutionTracer.java +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/chunk/ChunkExecutionTracer.java @@ -31,13 +31,13 @@ public class ChunkExecutionTracer extends BaseTracer { return parentContext.with(spanBuilder.startSpan()); } - private String spanName(ChunkContext chunkContext) { + private static String spanName(ChunkContext chunkContext) { String jobName = chunkContext.getStepContext().getJobName(); String stepName = chunkContext.getStepContext().getStepName(); return "BatchJob " + jobName + "." + stepName + ".Chunk"; } - private void linkParentSpan(SpanBuilder spanBuilder, Context parentContext) { + private static void linkParentSpan(SpanBuilder spanBuilder, Context parentContext) { spanBuilder.setNoParent(); SpanContext parentSpanContext = Span.fromContext(parentContext).getSpanContext(); diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/SpringBatchTest.groovy b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/SpringBatchTest.groovy index 602933800c..af9f6faeba 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/SpringBatchTest.groovy +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/SpringBatchTest.groovy @@ -63,7 +63,7 @@ abstract class SpringBatchTest extends AgentInstrumentationSpecification { kind INTERNAL childOf span(1) status ERROR - errorEvent RuntimeException, "fail" + errorEvent IllegalStateException, "fail" } } } diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/jsr/TestBatchlet.groovy b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/jsr/TestBatchlet.groovy index a0b863ddaf..d8d8b9b680 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/jsr/TestBatchlet.groovy +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/jsr/TestBatchlet.groovy @@ -17,7 +17,7 @@ class TestBatchlet implements Batchlet { @Override String process() throws Exception { if (fail != null && Integer.valueOf(fail) == 1) { - throw new RuntimeException("fail") + throw new IllegalStateException("fail") } return "FINISHED" } diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/springbatch/TestTasklet.groovy b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/springbatch/TestTasklet.groovy index 36f7881f75..7394dc0681 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/springbatch/TestTasklet.groovy +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/test/groovy/springbatch/TestTasklet.groovy @@ -14,7 +14,7 @@ class TestTasklet implements Tasklet { @Override RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { if (chunkContext.stepContext.stepExecution.jobParameters.getLong("fail") == 1) { - throw new RuntimeException("fail") + throw new IllegalStateException("fail") } RepeatStatus.FINISHED } diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/aspects/WithSpanAspectTracer.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/aspects/WithSpanAspectTracer.java index a038fa0802..cc461119f7 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/aspects/WithSpanAspectTracer.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/aspects/WithSpanAspectTracer.java @@ -10,6 +10,7 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; import io.opentelemetry.extension.annotations.WithSpan; import io.opentelemetry.instrumentation.api.tracer.BaseTracer; +import io.opentelemetry.instrumentation.api.tracer.SpanNames; import io.opentelemetry.instrumentation.api.tracer.async.AsyncSpanEndStrategies; import io.opentelemetry.instrumentation.api.tracer.async.AsyncSpanEndStrategy; import java.lang.reflect.Method; @@ -41,10 +42,10 @@ class WithSpanAspectTracer extends BaseTracer { } } - private String spanName(WithSpan annotation, Method method) { + private static String spanName(WithSpan annotation, Method method) { String spanName = annotation.value(); if (spanName.isEmpty()) { - return spanNameForMethod(method); + return SpanNames.spanNameForMethod(method); } return spanName; } diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/httpclients/webclient/WebClientBeanPostProcessor.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/httpclients/webclient/WebClientBeanPostProcessor.java index 9ad6ed5f78..37a16da55f 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/httpclients/webclient/WebClientBeanPostProcessor.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/httpclients/webclient/WebClientBeanPostProcessor.java @@ -38,12 +38,12 @@ final class WebClientBeanPostProcessor implements BeanPostProcessor { return bean; } - private WebClient.Builder wrapBuilder( + private static WebClient.Builder wrapBuilder( OpenTelemetry openTelemetry, WebClient.Builder webClientBuilder) { return webClientBuilder.filters(webClientFilterFunctionConsumer(openTelemetry)); } - private Consumer> webClientFilterFunctionConsumer( + private static Consumer> webClientFilterFunctionConsumer( OpenTelemetry openTelemetry) { return functions -> { if (functions.stream().noneMatch(filter -> filter instanceof WebClientTracingFilter)) { diff --git a/instrumentation/spring/spring-scheduling-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/scheduling/SpringSchedulingTracer.java b/instrumentation/spring/spring-scheduling-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/scheduling/SpringSchedulingTracer.java index a4cedc7e0b..2f25f9c535 100644 --- a/instrumentation/spring/spring-scheduling-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/scheduling/SpringSchedulingTracer.java +++ b/instrumentation/spring/spring-scheduling-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/scheduling/SpringSchedulingTracer.java @@ -26,7 +26,7 @@ public class SpringSchedulingTracer extends BaseTracer { return startSpan(spanNameOnRun(runnable), SpanKind.INTERNAL); } - private String spanNameOnRun(Runnable runnable) { + private static String spanNameOnRun(Runnable runnable) { if (runnable instanceof ScheduledMethodRunnable) { ScheduledMethodRunnable scheduledMethodRunnable = (ScheduledMethodRunnable) runnable; return spanNameForMethod(scheduledMethodRunnable.getMethod()); diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/AdviceUtils.java b/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/AdviceUtils.java index 2b24a2da41..79b079820e 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/AdviceUtils.java +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/AdviceUtils.java @@ -5,11 +5,10 @@ package io.opentelemetry.javaagent.instrumentation.spring.webflux.server; -import static io.opentelemetry.javaagent.instrumentation.spring.webflux.server.SpringWebfluxHttpServerTracer.tracer; - import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.StatusCode; import io.opentelemetry.context.Scope; +import io.opentelemetry.instrumentation.api.tracer.SpanNames; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; @@ -27,7 +26,7 @@ public class AdviceUtils { public static final String CONTEXT_ATTRIBUTE = AdviceUtils.class.getName() + ".Context"; public static String parseOperationName(Object handler) { - String className = tracer().spanNameForClass(handler.getClass()); + String className = SpanNames.spanNameForClass(handler.getClass()); String operationName; int lambdaIdx = className.indexOf("$$Lambda$"); diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/HandlerAdapterInstrumentation.java b/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/HandlerAdapterInstrumentation.java index 4a085b8897..f9451a9b8b 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/HandlerAdapterInstrumentation.java +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/HandlerAdapterInstrumentation.java @@ -7,7 +7,6 @@ package io.opentelemetry.javaagent.instrumentation.spring.webflux.server; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static io.opentelemetry.javaagent.instrumentation.spring.webflux.server.SpringWebfluxHttpServerTracer.tracer; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -21,6 +20,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.servlet.ServletContextPath; import io.opentelemetry.instrumentation.api.tracer.ServerSpan; +import io.opentelemetry.instrumentation.api.tracer.SpanNames; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.spring.webflux.SpringWebfluxConfig; @@ -74,7 +74,7 @@ public class HandlerAdapterInstrumentation implements TypeInstrumentation { if (handler instanceof HandlerMethod) { // Special case for requests mapped with annotations HandlerMethod handlerMethod = (HandlerMethod) handler; - operationName = tracer().spanNameForMethod(handlerMethod.getMethod()); + operationName = SpanNames.spanNameForMethod(handlerMethod.getMethod()); handlerType = handlerMethod.getMethod().getDeclaringClass().getName(); } else { operationName = AdviceUtils.parseOperationName(handler); diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/SpringWebfluxTest.groovy b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/SpringWebfluxTest.groovy index 78d4cc42cc..f0c820d9c0 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/SpringWebfluxTest.groovy +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/SpringWebfluxTest.groovy @@ -396,7 +396,7 @@ class SpringWebfluxTest extends AgentInstrumentationSpecification { kind INTERNAL childOf span(0) status ERROR - errorEvent(RuntimeException, "bad things happen") + errorEvent(IllegalStateException, "bad things happen") attributes { if (annotatedMethod == null) { // Functional API diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/SpringWebFluxTestApplication.groovy b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/SpringWebFluxTestApplication.groovy index 491101c164..855d0c092c 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/SpringWebFluxTestApplication.groovy +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/SpringWebFluxTestApplication.groovy @@ -66,12 +66,12 @@ class SpringWebFluxTestApplication { }).andRoute(GET("/greet-failfast/{id}"), new HandlerFunction() { @Override Mono handle(ServerRequest request) { - throw new RuntimeException("bad things happen") + throw new IllegalStateException("bad things happen") } }).andRoute(GET("/greet-failmono/{id}"), new HandlerFunction() { @Override Mono handle(ServerRequest request) { - return Mono.error(new RuntimeException("bad things happen")) + return Mono.error(new IllegalStateException("bad things happen")) } }).andRoute(GET("/greet-traced-method/{id}"), new HandlerFunction() { @Override diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/TestController.groovy b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/TestController.groovy index 9107418eda..cd21cbcaa0 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/TestController.groovy +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/TestController.groovy @@ -40,12 +40,12 @@ class TestController { @GetMapping("/foo-failfast/{id}") Mono getFooFailFast(@PathVariable("id") long id) { - throw new RuntimeException("bad things happen") + throw new IllegalStateException("bad things happen") } @GetMapping("/foo-failmono/{id}") Mono getFooFailMono(@PathVariable("id") long id) { - return Mono.error(new RuntimeException("bad things happen")) + return Mono.error(new IllegalStateException("bad things happen")) } @GetMapping("/foo-traced-method/{id}") diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/base/ControllerSpringWebFluxServerTest.groovy b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/base/ControllerSpringWebFluxServerTest.groovy index 1369beaf34..501d142aed 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/base/ControllerSpringWebFluxServerTest.groovy +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/base/ControllerSpringWebFluxServerTest.groovy @@ -27,7 +27,7 @@ abstract class ControllerSpringWebFluxServerTest extends SpringWebFluxServerTest kind INTERNAL if (endpoint == EXCEPTION) { status StatusCode.ERROR - errorEvent(RuntimeException, EXCEPTION.body) + errorEvent(IllegalStateException, EXCEPTION.body) } else if (endpoint == NOT_FOUND) { status StatusCode.ERROR if (Boolean.getBoolean("testLatestDeps")) { diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/base/HandlerSpringWebFluxServerTest.groovy b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/base/HandlerSpringWebFluxServerTest.groovy index cb702c8eba..4c2b1f123f 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/base/HandlerSpringWebFluxServerTest.groovy +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/base/HandlerSpringWebFluxServerTest.groovy @@ -27,7 +27,7 @@ abstract class HandlerSpringWebFluxServerTest extends SpringWebFluxServerTest { kind INTERNAL if (endpoint == EXCEPTION) { status StatusCode.ERROR - errorEvent(RuntimeException, EXCEPTION.body) + errorEvent(IllegalStateException, EXCEPTION.body) } else if (endpoint == NOT_FOUND) { status StatusCode.ERROR if (Boolean.getBoolean("testLatestDeps")) { diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/base/SpringWebFluxServerTest.groovy b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/base/SpringWebFluxServerTest.groovy index 8215418e25..6e976ee5c4 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/base/SpringWebFluxServerTest.groovy +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/server/base/SpringWebFluxServerTest.groovy @@ -62,6 +62,6 @@ abstract class SpringWebFluxServerTest extends HttpServerTest expectedExceptionClass() { - return RuntimeException + return IllegalStateException } } diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/java/server/base/ServerTestController.java b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/java/server/base/ServerTestController.java index a0fa2e758f..def96b5213 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/java/server/base/ServerTestController.java +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/java/server/base/ServerTestController.java @@ -72,7 +72,7 @@ public abstract class ServerTestController { return wrapControllerMethod( endpoint, () -> { - throw new RuntimeException(endpoint.getBody()); + throw new IllegalStateException(endpoint.getBody()); }); } diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/java/server/base/ServerTestRouteFactory.java b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/java/server/base/ServerTestRouteFactory.java index 7bf88d522c..3a23dc6f21 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/java/server/base/ServerTestRouteFactory.java +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/java/server/base/ServerTestRouteFactory.java @@ -61,7 +61,7 @@ public abstract class ServerTestRouteFactory { ServerResponse.ok(), "", () -> { - throw new RuntimeException(endpoint.getBody()); + throw new IllegalStateException(endpoint.getBody()); }); }) .andRoute( diff --git a/instrumentation/twilio-6.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/twilio/TwilioTracer.java b/instrumentation/twilio-6.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/twilio/TwilioTracer.java index 8259496a44..59438dbb27 100644 --- a/instrumentation/twilio-6.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/twilio/TwilioTracer.java +++ b/instrumentation/twilio-6.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/twilio/TwilioTracer.java @@ -8,12 +8,14 @@ package io.opentelemetry.javaagent.instrumentation.twilio; import static io.opentelemetry.api.trace.SpanKind.CLIENT; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.Uninterruptibles; import com.twilio.rest.api.v2010.account.Call; import com.twilio.rest.api.v2010.account.Message; import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.config.Config; import io.opentelemetry.instrumentation.api.tracer.BaseTracer; +import io.opentelemetry.instrumentation.api.tracer.SpanNames; import java.lang.reflect.Method; import java.util.concurrent.TimeUnit; import org.slf4j.Logger; @@ -44,8 +46,8 @@ public class TwilioTracer extends BaseTracer { } /** Decorate trace based on service execution metadata. */ - private String spanNameOnServiceExecution(Object serviceExecutor, String methodName) { - return spanNameForMethod(serviceExecutor.getClass(), methodName); + private static String spanNameOnServiceExecution(Object serviceExecutor, String methodName) { + return SpanNames.spanNameForMethod(serviceExecutor.getClass(), methodName); } /** Annotate the span with the results of the operation. */ @@ -54,7 +56,9 @@ public class TwilioTracer extends BaseTracer { // Unwrap ListenableFuture (if present) if (result instanceof ListenableFuture) { try { - result = ((ListenableFuture) result).get(0, TimeUnit.MICROSECONDS); + result = + Uninterruptibles.getUninterruptibly( + (ListenableFuture) result, 0, TimeUnit.MICROSECONDS); } catch (Exception e) { log.debug("Error unwrapping result", e); } @@ -108,7 +112,7 @@ public class TwilioTracer extends BaseTracer { * Helper method for calling a getter using reflection. This will be slow, so only use when * required. */ - private void setTagIfPresent(Span span, Object result, String tag, String getter) { + private static void setTagIfPresent(Span span, Object result, String tag, String getter) { try { Method method = result.getClass().getMethod(getter); Object value = method.invoke(result); diff --git a/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowHttpServerTracer.java b/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowHttpServerTracer.java index 195b4c544e..a001f812e8 100644 --- a/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowHttpServerTracer.java +++ b/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowHttpServerTracer.java @@ -73,7 +73,7 @@ public class UndertowHttpServerTracer } } - private void endSpan(Context context, Throwable throwable, HttpServerExchange exchange) { + private static void endSpan(Context context, Throwable throwable, HttpServerExchange exchange) { if (throwable != null) { tracer().endExceptionally(context, throwable, exchange); } else { diff --git a/instrumentation/vertx-reactive-3.5/javaagent/src/test/groovy/server/VertxRxHttpServerTest.groovy b/instrumentation/vertx-reactive-3.5/javaagent/src/test/groovy/server/VertxRxHttpServerTest.groovy index 427e130061..4cf15dbee6 100644 --- a/instrumentation/vertx-reactive-3.5/javaagent/src/test/groovy/server/VertxRxHttpServerTest.groovy +++ b/instrumentation/vertx-reactive-3.5/javaagent/src/test/groovy/server/VertxRxHttpServerTest.groovy @@ -41,7 +41,7 @@ class VertxRxHttpServerTest extends HttpServerTest implements AgentTestTr .setConfig(new JsonObject().put(CONFIG_HTTP_SERVER_PORT, port)) .setInstances(3)) { res -> if (!res.succeeded()) { - throw new RuntimeException("Cannot deploy server Verticle", res.cause()) + throw new IllegalStateException("Cannot deploy server Verticle", res.cause()) } future.complete(null) } diff --git a/instrumentation/vertx-reactive-3.5/javaagent/src/test/java/VertxReactiveWebServer.java b/instrumentation/vertx-reactive-3.5/javaagent/src/test/java/VertxReactiveWebServer.java index 9ba93fab73..4f1272c17b 100644 --- a/instrumentation/vertx-reactive-3.5/javaagent/src/test/java/VertxReactiveWebServer.java +++ b/instrumentation/vertx-reactive-3.5/javaagent/src/test/java/VertxReactiveWebServer.java @@ -12,6 +12,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.reactivex.Single; import io.vertx.core.DeploymentOptions; +import io.vertx.core.Future; import io.vertx.core.Handler; import io.vertx.core.VertxOptions; import io.vertx.core.json.JsonArray; @@ -76,7 +77,7 @@ public class VertxReactiveWebServer extends AbstractVerticle { } @Override - public void start(io.vertx.core.Future startFuture) { + public void start(Future startFuture) { setUpInitialData( ready -> { Router router = Router.router(vertx); @@ -87,7 +88,7 @@ public class VertxReactiveWebServer extends AbstractVerticle { .handler( ctx -> ctx.response().setStatusCode(SUCCESS.getStatus()).end(SUCCESS.getBody())); - router.route("/listProducts").handler(this::handleListProducts); + router.route("/listProducts").handler(VertxReactiveWebServer::handleListProducts); vertx .createHttpServer() @@ -97,7 +98,7 @@ public class VertxReactiveWebServer extends AbstractVerticle { } @SuppressWarnings("CheckReturnValue") - private void handleListProducts(RoutingContext routingContext) { + private static void handleListProducts(RoutingContext routingContext) { Long requestId = extractRequestId(routingContext); attachRequestIdToCurrentSpan(requestId); @@ -115,7 +116,7 @@ public class VertxReactiveWebServer extends AbstractVerticle { } } - private Single listProducts(Long requestId) { + private static Single listProducts(Long requestId) { Span span = tracer.spanBuilder("listProducts").startSpan(); try (Scope ignored = Context.current().with(span).makeCurrent()) { attachRequestIdToCurrentSpan(requestId); @@ -135,22 +136,22 @@ public class VertxReactiveWebServer extends AbstractVerticle { } } - private Long extractRequestId(RoutingContext routingContext) { + private static Long extractRequestId(RoutingContext routingContext) { String requestIdString = routingContext.request().params().get(TEST_REQUEST_ID_PARAMETER); return requestIdString != null ? Long.valueOf(requestIdString) : null; } - private void attachRequestIdToCurrentSpan(Long requestId) { + private static void attachRequestIdToCurrentSpan(Long requestId) { if (requestId != null) { Span.current().setAttribute(TEST_REQUEST_ID_ATTRIBUTE, requestId); } } - private void setUpInitialData(Handler done) { + private static void setUpInitialData(Handler done) { client.getConnection( res -> { if (res.failed()) { - throw new RuntimeException(res.cause()); + throw new IllegalStateException(res.cause()); } SQLConnection conn = res.result(); @@ -159,14 +160,14 @@ public class VertxReactiveWebServer extends AbstractVerticle { "CREATE TABLE IF NOT EXISTS products(id INT IDENTITY, name VARCHAR(255), price FLOAT, weight INT)", ddl -> { if (ddl.failed()) { - throw new RuntimeException(ddl.cause()); + throw new IllegalStateException(ddl.cause()); } conn.execute( "INSERT INTO products (name, price, weight) VALUES ('Egg Whisk', 3.99, 150), ('Tea Cosy', 5.99, 100), ('Spatula', 1.00, 80)", fixtures -> { if (fixtures.failed()) { - throw new RuntimeException(fixtures.cause()); + throw new IllegalStateException(fixtures.cause()); } done.handle(null); diff --git a/instrumentation/vertx-reactive-3.5/javaagent/src/test/java/client/VertxRxCircuitBreakerSingleConnection.java b/instrumentation/vertx-reactive-3.5/javaagent/src/test/java/client/VertxRxCircuitBreakerSingleConnection.java index 669a84de6e..005ef2cf46 100644 --- a/instrumentation/vertx-reactive-3.5/javaagent/src/test/java/client/VertxRxCircuitBreakerSingleConnection.java +++ b/instrumentation/vertx-reactive-3.5/javaagent/src/test/java/client/VertxRxCircuitBreakerSingleConnection.java @@ -34,11 +34,7 @@ public class VertxRxCircuitBreakerSingleConnection extends VertxRxSingleConnecti } }); - try { - return (HttpResponse) future.get(); - } catch (Exception e) { - throw new RuntimeException(e); - } + return (HttpResponse) future.join(); } private void sendRequestWithCallback(HttpRequest request, Consumer> consumer) { diff --git a/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java b/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java index 733e80f778..83e4f7f517 100644 --- a/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java +++ b/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java @@ -50,7 +50,7 @@ public final class RoutingContextHandlerWrapper implements Handler implements AgentTestTrai .setConfig(new JsonObject().put(VertxWebServer.CONFIG_HTTP_SERVER_PORT, port)) .setInstances(3)) { res -> if (!res.succeeded()) { - throw new RuntimeException("Cannot deploy server Verticle", res.cause()) + throw new IllegalStateException("Cannot deploy server Verticle", res.cause()) } future.complete(null) } diff --git a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/CallDepthThreadLocalMap.java b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/CallDepthThreadLocalMap.java index 120e5a3d3e..43d83adccc 100644 --- a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/CallDepthThreadLocalMap.java +++ b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/CallDepthThreadLocalMap.java @@ -20,7 +20,7 @@ package io.opentelemetry.javaagent.instrumentation.api; *

In short, the semantic of both methods is the same: they will return value 0 if and only if * current method invocation is the first one for the current call stack. */ -public class CallDepthThreadLocalMap { +public final class CallDepthThreadLocalMap { private static final ClassValue TLS = new ClassValue() { @@ -52,4 +52,6 @@ public class CallDepthThreadLocalMap { return new CallDepth(); } } + + private CallDepthThreadLocalMap() {} } diff --git a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/ClassHierarchyIterable.java b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/ClassHierarchyIterable.java index a57c11ec06..6a8b1a9815 100644 --- a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/ClassHierarchyIterable.java +++ b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/ClassHierarchyIterable.java @@ -11,6 +11,7 @@ import java.util.Iterator; import java.util.NoSuchElementException; import java.util.Queue; import java.util.Set; +import org.checkerframework.checker.nullness.qual.Nullable; /** * Iterates over a class, its superclass, and its interfaces in the following breath-first-like @@ -43,7 +44,7 @@ public class ClassHierarchyIterable implements Iterable> { } public class ClassIterator implements Iterator> { - private Class next; + @Nullable private Class next; private final Set> queuedInterfaces = new HashSet<>(); private final Queue> classesToExpand = new ArrayDeque<>(); diff --git a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/InstrumentationContext.java b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/InstrumentationContext.java index 5bc7702cf9..f424638163 100644 --- a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/InstrumentationContext.java +++ b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/InstrumentationContext.java @@ -27,7 +27,7 @@ public class InstrumentationContext { * @return The instance of context store for given arguments. */ public static ContextStore get(Class keyClass, Class contextClass) { - throw new RuntimeException( + throw new IllegalStateException( "Calls to this method will be rewritten by Instrumentation Context Provider (e.g. FieldBackedProvider)"); } } diff --git a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/Java8BytecodeBridge.java b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/Java8BytecodeBridge.java index e425b62bbd..e0d95912aa 100644 --- a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/Java8BytecodeBridge.java +++ b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/Java8BytecodeBridge.java @@ -31,4 +31,6 @@ public final class Java8BytecodeBridge { public static Span spanFromContext(Context context) { return Span.fromContext(context); } + + private Java8BytecodeBridge() {} } diff --git a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/OpenTelemetrySdkAccess.java b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/OpenTelemetrySdkAccess.java index 658dcbe02f..2fc10fda88 100644 --- a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/OpenTelemetrySdkAccess.java +++ b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/OpenTelemetrySdkAccess.java @@ -25,11 +25,11 @@ public final class OpenTelemetrySdkAccess { void run(int timeout, TimeUnit unit); } - private static volatile ForceFlusher FORCE_FLUSH; + private static volatile ForceFlusher forceFlush; /** Forces flushing of pending spans. */ public static void forceFlush(int timeout, TimeUnit unit) { - FORCE_FLUSH.run(timeout, unit); + forceFlush.run(timeout, unit); } /** @@ -38,11 +38,11 @@ public final class OpenTelemetrySdkAccess { * call this. */ public static void internalSetForceFlush(ForceFlusher forceFlush) { - if (FORCE_FLUSH != null) { + if (OpenTelemetrySdkAccess.forceFlush != null) { // Only possible by misuse of this API, just ignore. return; } - FORCE_FLUSH = forceFlush; + OpenTelemetrySdkAccess.forceFlush = forceFlush; } private OpenTelemetrySdkAccess() {} diff --git a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/SafeServiceLoader.java b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/SafeServiceLoader.java index cf351ee188..f31b37dc25 100644 --- a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/SafeServiceLoader.java +++ b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/SafeServiceLoader.java @@ -12,7 +12,7 @@ import java.util.ServiceLoader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class SafeServiceLoader { +public final class SafeServiceLoader { private static final Logger log = LoggerFactory.getLogger(SafeServiceLoader.class); @@ -25,6 +25,8 @@ public class SafeServiceLoader { * this should not happen. Please read CONTRIBUTING.md, section "Testing - Java versions" for a * background info why this is Ok. */ + // Because we want to catch exception per iteration + @SuppressWarnings("ForEachIterable") public static List load(Class serviceClass) { List result = new ArrayList<>(); java.util.ServiceLoader services = ServiceLoader.load(serviceClass); @@ -37,4 +39,6 @@ public class SafeServiceLoader { } return result; } + + private SafeServiceLoader() {} } diff --git a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/concurrent/AdviceUtils.java b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/concurrent/AdviceUtils.java index 49fe101e4d..62f2d98fc3 100644 --- a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/concurrent/AdviceUtils.java +++ b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/concurrent/AdviceUtils.java @@ -10,7 +10,7 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; /** Helper utils for Runnable/Callable instrumentation. */ -public class AdviceUtils { +public final class AdviceUtils { /** * Start scope for a given task. @@ -30,4 +30,6 @@ public class AdviceUtils { } return null; } + + private AdviceUtils() {} } diff --git a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/concurrent/ExecutorInstrumentationUtils.java b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/concurrent/ExecutorInstrumentationUtils.java index 3c7db80798..2ec7f16bcf 100644 --- a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/concurrent/ExecutorInstrumentationUtils.java +++ b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/concurrent/ExecutorInstrumentationUtils.java @@ -10,7 +10,7 @@ import io.opentelemetry.instrumentation.api.internal.ContextPropagationDebug; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; /** Utils for concurrent instrumentations. */ -public class ExecutorInstrumentationUtils { +public final class ExecutorInstrumentationUtils { private static final String AGENT_CLASSLOADER_NAME = "io.opentelemetry.javaagent.bootstrap.AgentClassLoader"; @@ -177,4 +177,6 @@ public class ExecutorInstrumentationUtils { state.clearParentContext(); } } + + private ExecutorInstrumentationUtils() {} } diff --git a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/internal/BootstrapPackagePrefixesHolder.java b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/internal/BootstrapPackagePrefixesHolder.java index 76b6a35b85..f5e3d62af5 100644 --- a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/internal/BootstrapPackagePrefixesHolder.java +++ b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/internal/BootstrapPackagePrefixesHolder.java @@ -16,19 +16,21 @@ import java.util.List; * The instrumentation does not have access to the installer, therefore this utility class is used * to share package prefixes. */ -public class BootstrapPackagePrefixesHolder { +public final class BootstrapPackagePrefixesHolder { - private static volatile List BOOSTRAP_PACKAGE_PREFIXES; + private static volatile List bootstrapPackagePrefixes; public static List getBoostrapPackagePrefixes() { - return BOOSTRAP_PACKAGE_PREFIXES; + return bootstrapPackagePrefixes; } public static void setBoostrapPackagePrefixes(List prefixes) { - if (BOOSTRAP_PACKAGE_PREFIXES != null) { + if (bootstrapPackagePrefixes != null) { // Only possible by misuse of this API, just ignore. return; } - BOOSTRAP_PACKAGE_PREFIXES = Collections.unmodifiableList(prefixes); + bootstrapPackagePrefixes = Collections.unmodifiableList(prefixes); } + + private BootstrapPackagePrefixesHolder() {} } diff --git a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/undertow/KeyHolder.java b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/undertow/KeyHolder.java index 8fcdb3700e..e6f28d6eec 100644 --- a/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/undertow/KeyHolder.java +++ b/javaagent-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/undertow/KeyHolder.java @@ -30,6 +30,8 @@ import java.util.concurrent.ConcurrentMap; * instance of the key. */ // TODO allow instrumentation to have their own classes that should go to bootstrap classloader -public class KeyHolder { +public final class KeyHolder { public static final ConcurrentMap, Object> contextKeys = new ConcurrentHashMap<>(); + + private KeyHolder() {} } diff --git a/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/OpenTelemetryAgent.java b/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/OpenTelemetryAgent.java index 817bd782f8..6fe87f3b6e 100644 --- a/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/OpenTelemetryAgent.java +++ b/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/OpenTelemetryAgent.java @@ -42,7 +42,7 @@ import java.util.regex.Pattern; *

  • Do dot touch any logging facilities here so we can configure them later * */ -public class OpenTelemetryAgent { +public final class OpenTelemetryAgent { private static final Class thisClass = OpenTelemetryAgent.class; public static void premain(String agentArgs, Instrumentation inst) { @@ -101,27 +101,29 @@ public class OpenTelemetryAgent { if (agentArgument == null) { agentArgument = arg; } else { - throw new RuntimeException( - "Multiple javaagents specified and code source unavailable, not installing tracing agent"); + throw new IllegalStateException( + "Multiple javaagents specified and code source unavailable, " + + "not installing tracing agent"); } } } if (agentArgument == null) { - throw new RuntimeException( - "Could not find javaagent parameter and code source unavailable, not installing tracing agent"); + throw new IllegalStateException( + "Could not find javaagent parameter and code source unavailable, " + + "not installing tracing agent"); } // argument is of the form -javaagent:/path/to/java-agent.jar=optionalargumentstring Matcher matcher = Pattern.compile("-javaagent:([^=]+).*").matcher(agentArgument); if (!matcher.matches()) { - throw new RuntimeException("Unable to parse javaagent parameter: " + agentArgument); + throw new IllegalStateException("Unable to parse javaagent parameter: " + agentArgument); } File javaagentFile = new File(matcher.group(1)); if (!(javaagentFile.exists() || javaagentFile.isFile())) { - throw new RuntimeException("Unable to find javaagent file: " + javaagentFile); + throw new IllegalStateException("Unable to find javaagent file: " + javaagentFile); } javaAgentJarUrl = javaagentFile.toURI().toURL(); JarFile agentJar = new JarFile(javaagentFile, false); @@ -163,7 +165,8 @@ public class OpenTelemetryAgent { } catch (ReflectiveOperationException e1) { // Fallback to default System.out.println( - "WARNING: Unable to get VM args through reflection. A custom java.util.logging.LogManager may not work correctly"); + "WARNING: Unable to get VM args through reflection. " + + "A custom java.util.logging.LogManager may not work correctly"); return ManagementFactory.getRuntimeMXBean().getInputArguments(); } @@ -177,12 +180,13 @@ public class OpenTelemetryAgent { if (thisClass.getCanonicalName().equals(mainClass)) { return true; } - throw new RuntimeException( + throw new IllegalStateException( "opentelemetry-javaagent is not installed, because class '" + thisClass.getCanonicalName() + "' is located in '" + jarUrl - + "'. Make sure you don't have this .class file anywhere, besides opentelemetry-javaagent.jar"); + + "'. Make sure you don't have this .class file anywhere, " + + "besides opentelemetry-javaagent.jar"); } /** @@ -198,4 +202,6 @@ public class OpenTelemetryAgent { e.printStackTrace(); } } + + private OpenTelemetryAgent() {} } diff --git a/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/AgentClassLoader.java b/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/AgentClassLoader.java index a7e06af03f..4ecd0bd184 100644 --- a/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/AgentClassLoader.java +++ b/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/AgentClassLoader.java @@ -22,6 +22,7 @@ import java.util.Enumeration; import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.jar.Manifest; +import org.checkerframework.checker.nullness.qual.Nullable; /** * Classloader used to run the core agent. @@ -274,7 +275,7 @@ public class AgentClassLoader extends URLClassLoader { return new URL(jarBase, jarEntry.getName()); } catch (MalformedURLException e) { throw new IllegalStateException( - "Failed to construct url for jar entry " + jarEntry.getName()); + "Failed to construct url for jar entry " + jarEntry.getName(), e); } } @@ -368,8 +369,8 @@ public class AgentClassLoader extends URLClassLoader { private static class AgentClassLoaderUrlConnection extends URLConnection { private final JarFile jarFile; - private final String entryName; - private JarEntry jarEntry; + @Nullable private final String entryName; + @Nullable private JarEntry jarEntry; AgentClassLoaderUrlConnection(URL url, JarFile jarFile) { super(url); diff --git a/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/AgentInitializer.java b/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/AgentInitializer.java index 4eba4171fe..39d74559f7 100644 --- a/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/AgentInitializer.java +++ b/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/AgentInitializer.java @@ -10,6 +10,7 @@ import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.URL; +import org.checkerframework.checker.nullness.qual.Nullable; /** * Agent start up logic. @@ -19,11 +20,11 @@ import java.net.URL; *

    The intention is for this class to be loaded by bootstrap classloader to make sure we have * unimpeded access to the rest of agent parts. */ -public class AgentInitializer { +public final class AgentInitializer { // Accessed via reflection from tests. // fields must be managed under class lock - private static ClassLoader AGENT_CLASSLOADER = null; + @Nullable private static ClassLoader agentClassloader = null; // called via reflection in the OpenTelemetryAgent class public static void initialize(Instrumentation inst, URL bootstrapUrl) throws Exception { @@ -32,9 +33,9 @@ public class AgentInitializer { private static synchronized void startAgent(Instrumentation inst, URL bootstrapUrl) throws Exception { - if (AGENT_CLASSLOADER == null) { + if (agentClassloader == null) { ClassLoader agentClassLoader = createAgentClassLoader("inst", bootstrapUrl); - AGENT_CLASSLOADER = agentClassLoader; + agentClassloader = agentClassLoader; Class agentInstallerClass = agentClassLoader.loadClass("io.opentelemetry.javaagent.tooling.AgentInstaller"); @@ -52,7 +53,7 @@ public class AgentInitializer { // TODO misleading name public static synchronized ClassLoader getAgentClassloader() { - return AGENT_CLASSLOADER; + return agentClassloader; } /** @@ -104,4 +105,6 @@ public class AgentInitializer { public static boolean isJavaBefore9() { return System.getProperty("java.version").startsWith("1."); } + + private AgentInitializer() {} } diff --git a/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/ExceptionLogger.java b/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/ExceptionLogger.java index 0a1b72a61e..f1d0289d84 100644 --- a/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/ExceptionLogger.java +++ b/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/ExceptionLogger.java @@ -13,6 +13,8 @@ import org.slf4j.LoggerFactory; * *

    See io.opentelemetry.javaagent.tooling.ExceptionHandlers */ -public class ExceptionLogger { +public final class ExceptionLogger { public static final Logger LOGGER = LoggerFactory.getLogger(ExceptionLogger.class); + + private ExceptionLogger() {} } diff --git a/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/PatchLogger.java b/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/PatchLogger.java index 6081a8d741..dab719ceaf 100644 --- a/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/PatchLogger.java +++ b/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/PatchLogger.java @@ -10,6 +10,8 @@ import java.util.ResourceBundle; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.LogRecord; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Dependencies of the agent sometimes call java.util.logging.Logger.getLogger(). This can have the @@ -25,7 +27,7 @@ public class PatchLogger { public static final PatchLogger global = new PatchLogger(GLOBAL_LOGGER_NAME); - private final org.slf4j.Logger slf4jLogger; + private final Logger slf4jLogger; private ResourceBundle resourceBundle; @@ -38,16 +40,16 @@ public class PatchLogger { } private PatchLogger(String name) { - this(org.slf4j.LoggerFactory.getLogger(name)); + this(LoggerFactory.getLogger(name)); } // visible for testing - PatchLogger(org.slf4j.Logger logger) { - slf4jLogger = logger; + PatchLogger(Logger slf4jLogger) { + this.slf4jLogger = slf4jLogger; } // visible for testing - org.slf4j.Logger getSlf4jLogger() { + Logger getSlf4jLogger() { return slf4jLogger; } diff --git a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/matcher/AgentElementMatchers.java b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/matcher/AgentElementMatchers.java index 870ff11dc7..ddfb4846a6 100644 --- a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/matcher/AgentElementMatchers.java +++ b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/matcher/AgentElementMatchers.java @@ -25,12 +25,14 @@ public final class AgentElementMatchers { public static ElementMatcher.Junction implementsInterface( ElementMatcher matcher) { - return new SafeHasSuperTypeMatcher(new SafeErasureMatcher<>(matcher), true); + return new SafeHasSuperTypeMatcher( + new SafeErasureMatcher<>(matcher), /* interfacesOnly= */ true); } public static ElementMatcher.Junction safeHasSuperType( ElementMatcher matcher) { - return new SafeHasSuperTypeMatcher(new SafeErasureMatcher<>(matcher), false); + return new SafeHasSuperTypeMatcher( + new SafeErasureMatcher<>(matcher), /* interfacesOnly= */ false); } /** @@ -70,7 +72,7 @@ public final class AgentElementMatchers { */ public static ElementMatcher.Junction failSafe( ElementMatcher matcher, String description) { - return new LoggingFailSafeMatcher<>(matcher, false, description); + return new LoggingFailSafeMatcher<>(matcher, /* fallback= */ false, description); } static String safeTypeDefinitionName(TypeDefinition td) { diff --git a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/matcher/ClassLoaderMatcher.java b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/matcher/ClassLoaderMatcher.java index 24c2973a95..84c291d97c 100644 --- a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/matcher/ClassLoaderMatcher.java +++ b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/matcher/ClassLoaderMatcher.java @@ -9,10 +9,11 @@ import io.opentelemetry.instrumentation.api.caching.Cache; import io.opentelemetry.javaagent.bootstrap.ClassLoaderMatcherCacheHolder; import io.opentelemetry.javaagent.instrumentation.api.internal.InClassLoaderMatcher; import net.bytebuddy.matcher.ElementMatcher; +import org.checkerframework.checker.nullness.qual.Nullable; public final class ClassLoaderMatcher { - public static final ClassLoader BOOTSTRAP_CLASSLOADER = null; + @Nullable public static final ClassLoader BOOTSTRAP_CLASSLOADER = null; /** A private constructor that must not be invoked. */ private ClassLoaderMatcher() { diff --git a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/matcher/NameMatchers.java b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/matcher/NameMatchers.java index 139c799209..56ed61a09a 100644 --- a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/matcher/NameMatchers.java +++ b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/matcher/NameMatchers.java @@ -21,7 +21,7 @@ public final class NameMatchers { * @return An element matcher checking if an element's exact name is a member of a set. */ public static ElementMatcher.Junction namedOneOf(String... names) { - return new SetMatcher<>(true, names); + return new SetMatcher<>(/* include= */ true, names); } /** @@ -33,7 +33,7 @@ public final class NameMatchers { */ public static ElementMatcher.Junction namedOneOf( Collection names) { - return new SetMatcher<>(true, names); + return new SetMatcher<>(/* include= */ true, names); } /** @@ -44,7 +44,7 @@ public final class NameMatchers { * @return An element matcher checking if an element's exact name is absent from a set. */ public static ElementMatcher.Junction namedNoneOf(String... names) { - return new SetMatcher<>(false, names); + return new SetMatcher<>(/* include= */ false, names); } private static class SetMatcher diff --git a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/matcher/SafeHasSuperTypeMatcher.java b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/matcher/SafeHasSuperTypeMatcher.java index 4ba4c36f76..c448aa4f89 100644 --- a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/matcher/SafeHasSuperTypeMatcher.java +++ b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/matcher/SafeHasSuperTypeMatcher.java @@ -14,6 +14,7 @@ import java.util.Set; import net.bytebuddy.description.type.TypeDefinition; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; +import org.checkerframework.checker.nullness.qual.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -93,7 +94,7 @@ class SafeHasSuperTypeMatcher extends ElementMatcher.Junction.AbstractBase safeGetInterfaces(TypeDefinition typeDefinition) { + private static Iterable safeGetInterfaces(TypeDefinition typeDefinition) { return new SafeInterfaceIterator(typeDefinition); } @@ -147,7 +148,7 @@ class SafeHasSuperTypeMatcher extends ElementMatcher.Junction.AbstractBase, Iterable { private final TypeDefinition typeDefinition; - private final Iterator it; + @Nullable private final Iterator it; private TypeDefinition next; private SafeInterfaceIterator(TypeDefinition typeDefinition) { @@ -190,7 +191,7 @@ class SafeHasSuperTypeMatcher extends ElementMatcher.Junction.AbstractBase sources = new LinkedHashSet<>(); private final Set flags = new LinkedHashSet<>(); private final String className; - private String superClassName = null; private final Set interfaceNames = new LinkedHashSet<>(); private final List fields = new ArrayList<>(); private final List methods = new ArrayList<>(); + @Nullable private String superClassName = null; + ClassRefBuilder(String className) { this.className = className; } diff --git a/javaagent-extension-api/src/test/groovy/io/opentelemetry/javaagent/extension/instrumentation/InstrumentationModuleTest.groovy b/javaagent-extension-api/src/test/groovy/io/opentelemetry/javaagent/extension/instrumentation/InstrumentationModuleTest.groovy index bf4856cdfa..9950ad817a 100644 --- a/javaagent-extension-api/src/test/groovy/io/opentelemetry/javaagent/extension/instrumentation/InstrumentationModuleTest.groovy +++ b/javaagent-extension-api/src/test/groovy/io/opentelemetry/javaagent/extension/instrumentation/InstrumentationModuleTest.groovy @@ -46,7 +46,7 @@ class InstrumentationModuleTest extends Specification { def "default disabled can override to enabled #enabled"() { setup: - Config.INSTANCE = new ConfigBuilder().readProperties([ + Config.instance = new ConfigBuilder().readProperties([ "otel.instrumentation.test.enabled": Boolean.toString(enabled) ]).build() def target = new TestInstrumentationModule(["test"]) { @@ -60,7 +60,7 @@ class InstrumentationModuleTest extends Specification { target.enabled == enabled cleanup: - Config.INSTANCE = null + Config.instance = null where: enabled << [true, false] diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java index 49181655e6..ed87b648a7 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java @@ -69,10 +69,10 @@ public class AgentInstaller { "otel.javaagent.testing.additional-library-ignores.enabled"; private static final Map> CLASS_LOAD_CALLBACKS = new HashMap<>(); - private static volatile Instrumentation INSTRUMENTATION; + private static volatile Instrumentation instrumentation; public static Instrumentation getInstrumentation() { - return INSTRUMENTATION; + return instrumentation; } static { @@ -116,7 +116,7 @@ public class AgentInstaller { Config config = Config.get(); installComponentsBeforeByteBuddy(componentInstallers, config); - INSTRUMENTATION = inst; + instrumentation = inst; FieldBackedProvider.resetContextMatchers(); @@ -472,10 +472,13 @@ public class AgentInstaller { @Override public Iterable>> resolve(Instrumentation instrumentation) { // filter out our agent classes and injected helper classes - return () -> streamOf(delegate.resolve(instrumentation)).map(this::filterClasses).iterator(); + return () -> + streamOf(delegate.resolve(instrumentation)) + .map(RedefinitionDiscoveryStrategy::filterClasses) + .iterator(); } - private Iterable> filterClasses(Iterable> classes) { + private static Iterable> filterClasses(Iterable> classes) { return () -> streamOf(classes).filter(c -> !isIgnored(c)).iterator(); } diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentTooling.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentTooling.java index 8a236e6769..13327969ce 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentTooling.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentTooling.java @@ -13,7 +13,7 @@ import io.opentelemetry.javaagent.tooling.bytebuddy.AgentLocationStrategy; * (both compile and runtime). Extracted out from AgentInstaller to begin separating some of the * logic out. */ -public class AgentTooling { +public final class AgentTooling { private static final AgentLocationStrategy LOCATION_STRATEGY = new AgentLocationStrategy(); private static final AgentCachingPoolStrategy POOL_STRATEGY = new AgentCachingPoolStrategy(); @@ -25,4 +25,6 @@ public class AgentTooling { public static AgentCachingPoolStrategy poolStrategy() { return POOL_STRATEGY; } + + private AgentTooling() {} } diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/HelperInjector.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/HelperInjector.java index 0b731f88da..73653beaf5 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/HelperInjector.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/HelperInjector.java @@ -30,6 +30,7 @@ import net.bytebuddy.dynamic.ClassFileLocator; import net.bytebuddy.dynamic.DynamicType; import net.bytebuddy.dynamic.loading.ClassInjector; import net.bytebuddy.utility.JavaModule; +import org.checkerframework.checker.nullness.qual.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -54,7 +55,7 @@ public class HelperInjector implements Transformer { private final Set helperClassNames; private final Set helperResourceNames; - private final ClassLoader helpersSource; + @Nullable private final ClassLoader helpersSource; private final Map dynamicTypeMap = new LinkedHashMap<>(); private final Cache injectedClassLoaders = @@ -164,7 +165,7 @@ public class HelperInjector implements Transformer { cl, e); } - throw new RuntimeException(e); + throw new IllegalStateException(e); } return true; }); @@ -188,8 +189,8 @@ public class HelperInjector implements Transformer { return builder; } - private Map> injectBootstrapClassLoader(Map classnameToBytes) - throws IOException { + private static Map> injectBootstrapClassLoader( + Map classnameToBytes) throws IOException { // Mar 2020: Since we're proactively cleaning up tempDirs, we cannot share dirs per thread. // If this proves expensive, we could do a per-process tempDir with // a reference count -- but for now, starting simple. @@ -208,7 +209,7 @@ public class HelperInjector implements Transformer { } } - private Map> injectClassLoader( + private static Map> injectClassLoader( ClassLoader classLoader, Map classnameToBytes) { return new ClassInjector.UsingReflection(classLoader).injectRaw(classnameToBytes); } diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/LoggingConfigurer.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/LoggingConfigurer.java index 421599495c..5c63b6f8ef 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/LoggingConfigurer.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/LoggingConfigurer.java @@ -7,7 +7,7 @@ package io.opentelemetry.javaagent.tooling; import java.util.Locale; -class LoggingConfigurer { +final class LoggingConfigurer { private static final String SIMPLE_LOGGER_SHOW_DATE_TIME_PROPERTY = "io.opentelemetry.javaagent.slf4j.simpleLogger.showDateTime"; @@ -69,4 +69,6 @@ class LoggingConfigurer { } return false; } + + private LoggingConfigurer() {} } diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/TransformSafeLogger.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/TransformSafeLogger.java index da96a34dc2..bc3573d22b 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/TransformSafeLogger.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/TransformSafeLogger.java @@ -11,6 +11,7 @@ import static org.slf4j.event.Level.WARN; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; +import org.checkerframework.checker.nullness.qual.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.event.Level; @@ -28,7 +29,7 @@ public final class TransformSafeLogger { private static final boolean ENABLE_TRANSFORM_SAFE_LOGGING = Boolean.getBoolean("otel.javaagent.testing.transform-safe-logging.enabled"); - private static final BlockingQueue logMessageQueue; + @Nullable private static final BlockingQueue logMessageQueue; static { if (ENABLE_TRANSFORM_SAFE_LOGGING) { diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/VersionLogger.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/VersionLogger.java index c56670489e..17b40a04d6 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/VersionLogger.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/VersionLogger.java @@ -9,7 +9,7 @@ import io.opentelemetry.instrumentation.api.InstrumentationVersion; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class VersionLogger { +public final class VersionLogger { private static final Logger log = LoggerFactory.getLogger(VersionLogger.class); @@ -24,4 +24,6 @@ public class VersionLogger { System.getProperty("java.vm.version")); } } + + private VersionLogger() {} } diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/bytebuddy/AgentCachingPoolStrategy.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/bytebuddy/AgentCachingPoolStrategy.java index 45b88d7827..fff67a9e4f 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/bytebuddy/AgentCachingPoolStrategy.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/bytebuddy/AgentCachingPoolStrategy.java @@ -5,12 +5,11 @@ package io.opentelemetry.javaagent.tooling.bytebuddy; -import static net.bytebuddy.agent.builder.AgentBuilder.PoolStrategy; - import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import java.lang.ref.WeakReference; import java.util.Objects; +import net.bytebuddy.agent.builder.AgentBuilder; import net.bytebuddy.description.annotation.AnnotationList; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.method.MethodList; @@ -42,7 +41,7 @@ import net.bytebuddy.pool.TypePool; *

    Eviction is handled almost entirely through a size restriction; however, softValues are still * used as a further safeguard. */ -public class AgentCachingPoolStrategy implements PoolStrategy { +public class AgentCachingPoolStrategy implements AgentBuilder.PoolStrategy { // Many things are package visible for testing purposes -- // others to avoid creation of synthetic accessors @@ -114,7 +113,7 @@ public class AgentCachingPoolStrategy implements PoolStrategy { TypePool.Default.ReaderMode.FAST); } - private TypePool createCachingTypePool( + private static TypePool createCachingTypePool( TypePool.CacheProvider cacheProvider, ClassFileLocator classFileLocator) { return new TypePool.Default.WithLazyResolution( cacheProvider, classFileLocator, TypePool.Default.ReaderMode.FAST); diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/bytebuddy/ExceptionHandlers.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/bytebuddy/ExceptionHandlers.java index 1ab72d7422..4223b5802a 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/bytebuddy/ExceptionHandlers.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/bytebuddy/ExceptionHandlers.java @@ -17,7 +17,7 @@ import net.bytebuddy.jar.asm.Type; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ExceptionHandlers { +public final class ExceptionHandlers { private static final String LOG_FACTORY_NAME = LoggerFactory.class.getName().replace('.', '/'); private static final String LOGGER_NAME = Logger.class.getName().replace('.', '/'); // Bootstrap ExceptionHandler.class will always be resolvable, so we'll use it in the log name @@ -63,7 +63,7 @@ public class ExceptionHandlers { LOG_FACTORY_NAME, "getLogger", "(Ljava/lang/Class;)L" + LOGGER_NAME + ";", - false); + /* isInterface= */ false); mv.visitInsn(Opcodes.SWAP); // stack: (top) throwable,logger mv.visitLdcInsn( "Failed to handle exception in instrumentation for " @@ -76,7 +76,7 @@ public class ExceptionHandlers { LOGGER_NAME, "debug", "(Ljava/lang/String;Ljava/lang/Throwable;)V", - true); + /* isInterface= */ true); mv.visitLabel(logEnd); mv.visitJumpInsn(Opcodes.GOTO, handlerExit); @@ -102,4 +102,6 @@ public class ExceptionHandlers { public static ExceptionHandler defaultExceptionHandler() { return EXCEPTION_STACK_HANDLER; } + + private ExceptionHandlers() {} } diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/context/FieldBackedProvider.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/context/FieldBackedProvider.java index eacdd3ea26..d1b60cf083 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/context/FieldBackedProvider.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/context/FieldBackedProvider.java @@ -171,17 +171,6 @@ public class FieldBackedProvider implements InstrumentationContextProvider { int writerFlags, int readerFlags) { return new ClassVisitor(Opcodes.ASM7, classVisitor) { - @Override - public void visit( - int version, - int access, - String name, - String signature, - String superName, - String[] interfaces) { - super.visit(version, access, name, signature, superName, interfaces); - } - @Override public MethodVisitor visitMethod( int access, String name, String descriptor, String signature, String[] exceptions) { @@ -241,7 +230,7 @@ public class FieldBackedProvider implements InstrumentationContextProvider { contextStoreImplementationClass.getInternalName(), GET_CONTEXT_STORE_METHOD.getName(), Type.getMethodDescriptor(GET_CONTEXT_STORE_METHOD), - false); + /* isInterface= */ false); return; } throw new IllegalStateException( @@ -710,7 +699,7 @@ public class FieldBackedProvider implements InstrumentationContextProvider { accessorInterfaceInternalName, getterName, Utils.getMethodDefinition(accessorInterface, getterName).getDescriptor(), - true); + /* isInterface= */ true); mv.visitInsn(Opcodes.ARETURN); mv.visitLabel(elseLabel); if (frames) { @@ -723,7 +712,7 @@ public class FieldBackedProvider implements InstrumentationContextProvider { instrumentedTypeInternalName, "mapGet", Utils.getMethodDefinition(instrumentedType, "mapGet").getDescriptor(), - false); + /* isInterface= */ false); mv.visitInsn(Opcodes.ARETURN); mv.visitMaxs(0, 0); mv.visitEnd(); @@ -765,7 +754,7 @@ public class FieldBackedProvider implements InstrumentationContextProvider { accessorInterfaceInternalName, setterName, Utils.getMethodDefinition(accessorInterface, setterName).getDescriptor(), - true); + /* isInterface= */ true); mv.visitJumpInsn(Opcodes.GOTO, endLabel); mv.visitLabel(elseLabel); if (frames) { @@ -779,7 +768,7 @@ public class FieldBackedProvider implements InstrumentationContextProvider { instrumentedTypeInternalName, "mapPut", Utils.getMethodDefinition(instrumentedType, "mapPut").getDescriptor(), - false); + /* isInterface= */ false); mv.visitLabel(endLabel); if (frames) { mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); @@ -830,7 +819,7 @@ public class FieldBackedProvider implements InstrumentationContextProvider { "mapSynchronizeInstance", Utils.getMethodDefinition(instrumentedType, "mapSynchronizeInstance") .getDescriptor(), - false); + /* isInterface= */ false); mv.visitInsn(Opcodes.ARETURN); mv.visitMaxs(0, 0); mv.visitEnd(); @@ -854,7 +843,7 @@ public class FieldBackedProvider implements InstrumentationContextProvider { * instance's own injected field or global hash map if field is not available. */ // Called from generated code - @SuppressWarnings({"UnusedMethod", "UnusedVariable"}) + @SuppressWarnings({"UnusedMethod", "UnusedVariable", "MethodCanBeStatic"}) private static final class ContextStoreImplementationTemplate implements ContextStore { private static final ContextStoreImplementationTemplate INSTANCE = @@ -991,17 +980,9 @@ public class FieldBackedProvider implements InstrumentationContextProvider { .make(); } - private AgentBuilder.Transformer getTransformerForAsmVisitor(final AsmVisitorWrapper visitor) { - return new AgentBuilder.Transformer() { - @Override - public DynamicType.Builder transform( - DynamicType.Builder builder, - TypeDescription typeDescription, - ClassLoader classLoader, - JavaModule module) { - return builder.visit(visitor); - } - }; + private static AgentBuilder.Transformer getTransformerForAsmVisitor( + final AsmVisitorWrapper visitor) { + return (builder, typeDescription, classLoader, module) -> builder.visit(visitor); } private String getContextStoreImplementationClassName( diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/InstrumentationModuleInstaller.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/InstrumentationModuleInstaller.java index 6d38d41cfe..081a7a801b 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/InstrumentationModuleInstaller.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/InstrumentationModuleInstaller.java @@ -101,7 +101,7 @@ public final class InstrumentationModuleInstaller { return agentBuilder; } - private InstrumentationContextProvider createInstrumentationContextProvider( + private static InstrumentationContextProvider createInstrumentationContextProvider( InstrumentationModule instrumentationModule) { Map contextStore = instrumentationModule.getMuzzleContextStoreClasses(); if (!contextStore.isEmpty()) { diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/matcher/GlobalClassloaderIgnoresMatcher.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/matcher/GlobalClassloaderIgnoresMatcher.java index c51198c137..32546bfb83 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/matcher/GlobalClassloaderIgnoresMatcher.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/matcher/GlobalClassloaderIgnoresMatcher.java @@ -45,7 +45,6 @@ public class GlobalClassloaderIgnoresMatcher case ALLOW: return false; case DEFAULT: - default: } if (cl == ClassLoadingStrategy.BOOTSTRAP_LOADER) { diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/matcher/GlobalIgnoresMatcher.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/matcher/GlobalIgnoresMatcher.java index c9a6db9314..d7bfa38f13 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/matcher/GlobalIgnoresMatcher.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/matcher/GlobalIgnoresMatcher.java @@ -61,7 +61,6 @@ public class GlobalIgnoresMatcher extends ElementMatcher.Junction.AbstractBase @@ -351,7 +351,7 @@ class MuzzleCodeGenerator implements AsmVisitorWrapper { mv.visitEnd(); } - private void writeNewMap(MethodVisitor mv, int size) { + private static void writeNewMap(MethodVisitor mv, int size) { mv.visitTypeInsn(Opcodes.NEW, "java/util/HashMap"); // stack: map mv.visitInsn(Opcodes.DUP); @@ -362,10 +362,11 @@ class MuzzleCodeGenerator implements AsmVisitorWrapper { // stack: map, map, size mv.visitLdcInsn(0.75f); // stack: map, map, size, loadFactor - mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/util/HashMap", "", "(IF)V", false); + mv.visitMethodInsn( + Opcodes.INVOKESPECIAL, "java/util/HashMap", "", "(IF)V", /* isInterface= */ false); } - private void writeSourcesArray(MethodVisitor mv, Set sources) { + private static void writeSourcesArray(MethodVisitor mv, Set sources) { Type referenceSourceType = Type.getType(Source.class); mv.visitLdcInsn(sources.size()); @@ -385,14 +386,14 @@ class MuzzleCodeGenerator implements AsmVisitorWrapper { referenceSourceType.getInternalName(), "", "(Ljava/lang/String;I)V", - false); + /* isInterface= */ false); mv.visitInsn(Opcodes.AASTORE); ++i; } } - private void writeFlagsArray(MethodVisitor mv, Set flags) { + private static void writeFlagsArray(MethodVisitor mv, Set flags) { Type referenceFlagType = Type.getType(Flag.class); mv.visitLdcInsn(flags.size()); @@ -413,13 +414,13 @@ class MuzzleCodeGenerator implements AsmVisitorWrapper { Pattern.compile("(?.*)\\$[0-9]+$"); // drops "$1" suffix for enum constants that override/implement super class methods - private String getEnumClassInternalName(Flag flag) { + private static String getEnumClassInternalName(Flag flag) { String fullInternalName = Utils.getInternalName(flag.getClass()); Matcher m = ANONYMOUS_ENUM_CONSTANT_CLASS.matcher(fullInternalName); return m.matches() ? m.group("enumClass") : fullInternalName; } - private void writeType(MethodVisitor mv, String descriptor) { + private static void writeType(MethodVisitor mv, String descriptor) { Type typeType = Type.getType(Type.class); mv.visitLdcInsn(descriptor); @@ -428,7 +429,7 @@ class MuzzleCodeGenerator implements AsmVisitorWrapper { typeType.getInternalName(), "getType", Type.getMethodDescriptor(typeType, Type.getType(String.class)), - false); + /* isInterface= */ false); } private void generateMuzzleHelperClassNamesMethod(ReferenceCollector collector) { @@ -456,7 +457,8 @@ class MuzzleCodeGenerator implements AsmVisitorWrapper { // stack: list, list mv.visitLdcInsn(helperClassNames.size()); // stack: list, list, size - mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/util/ArrayList", "", "(I)V", false); + mv.visitMethodInsn( + Opcodes.INVOKESPECIAL, "java/util/ArrayList", "", "(I)V", /* isInterface= */ false); // stack: list mv.visitVarInsn(Opcodes.ASTORE, 1); // stack: @@ -468,7 +470,11 @@ class MuzzleCodeGenerator implements AsmVisitorWrapper { mv.visitLdcInsn(helperClassName); // stack: list, helperClassName mv.visitMethodInsn( - Opcodes.INVOKEINTERFACE, "java/util/List", "add", "(Ljava/lang/Object;)Z", true); + Opcodes.INVOKEINTERFACE, + "java/util/List", + "add", + "(Ljava/lang/Object;)Z", + /* isInterface= */ true); // stack: added mv.visitInsn(Opcodes.POP); // stack: @@ -519,7 +525,7 @@ class MuzzleCodeGenerator implements AsmVisitorWrapper { "java/util/Map", "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", - true); + /* isInterface= */ true); // stack: previousValue mv.visitInsn(Opcodes.POP); // stack: diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/collector/ReferenceCollectingClassVisitor.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/collector/ReferenceCollectingClassVisitor.java index 7dfa76cdff..480725e7d9 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/collector/ReferenceCollectingClassVisitor.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/collector/ReferenceCollectingClassVisitor.java @@ -213,7 +213,7 @@ class ReferenceCollectingClassVisitor extends ClassVisitor { addReference( ClassRef.newBuilder(refSourceClassName) .addSource(refSourceClassName) - .addField(new Source[0], new Flag[0], name, fieldType, true) + .addField(new Source[0], new Flag[0], name, fieldType, /* isFieldDeclared= */ true) .build()); return super.visitField(access, name, descriptor, signature, value); @@ -327,7 +327,7 @@ class ReferenceCollectingClassVisitor extends ClassVisitor { fieldFlags.toArray(new Flag[0]), name, fieldType, - false) + /* isFieldDeclared= */ false) .build()); Type underlyingFieldType = underlyingType(Type.getType(descriptor)); diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/collector/ReferenceCollector.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/collector/ReferenceCollector.java index d29328801e..254651286b 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/collector/ReferenceCollector.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/collector/ReferenceCollector.java @@ -86,7 +86,7 @@ public class ReferenceCollector { throw new IllegalStateException("Error reading resource " + resource, e); } - visitClassesAndCollectReferences(spiImplementations, false); + visitClassesAndCollectReferences(spiImplementations, /* startsFromAdviceClass= */ false); } private static final Pattern AWS_SDK_V2_SERVICE_INTERCEPTOR_SPI = @@ -95,7 +95,7 @@ public class ReferenceCollector { private static final Pattern AWS_SDK_V1_SERVICE_INTERCEPTOR_SPI = Pattern.compile("com/amazonaws/services/\\w+(/\\w+)?/request.handler2s"); - private boolean isSpiFile(String resource) { + private static boolean isSpiFile(String resource) { return resource.startsWith("META-INF/services/") || resource.equals("software/amazon/awssdk/global/handlers/execution.interceptors") || resource.equals("com/amazonaws/global/handlers/request.handler2s") @@ -114,7 +114,7 @@ public class ReferenceCollector { * @see InstrumentationClassPredicate */ public void collectReferencesFromAdvice(String adviceClassName) { - visitClassesAndCollectReferences(singleton(adviceClassName), true); + visitClassesAndCollectReferences(singleton(adviceClassName), /* startsFromAdviceClass= */ true); } private void visitClassesAndCollectReferences( diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/matcher/HelperReferenceWrapper.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/matcher/HelperReferenceWrapper.java index 4799528aac..66bb24df77 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/matcher/HelperReferenceWrapper.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/matcher/HelperReferenceWrapper.java @@ -259,10 +259,12 @@ interface HelperReferenceWrapper { @Override public Stream getMethods() { - return type.getDeclaredMethods().stream().filter(this::isOverrideable).map(this::toMethod); + return type.getDeclaredMethods().stream() + .filter(ClasspathType::isOverrideable) + .map(this::toMethod); } - private boolean isOverrideable(InDefinedShape method) { + private static boolean isOverrideable(InDefinedShape method) { return !(method.isStatic() || method.isPrivate() || method.isConstructor()); } @@ -273,14 +275,16 @@ interface HelperReferenceWrapper { @Override public Stream getFields() { - return type.getDeclaredFields().stream().filter(this::isNotPrivate).map(this::toField); + return type.getDeclaredFields().stream() + .filter(ClasspathType::isNotPrivate) + .map(ClasspathType::toField); } - private boolean isNotPrivate(FieldDescription.InDefinedShape field) { + private static boolean isNotPrivate(FieldDescription.InDefinedShape field) { return !field.isPrivate(); } - private Field toField(FieldDescription.InDefinedShape field) { + private static Field toField(FieldDescription.InDefinedShape field) { return new Field(field.getName(), field.getDescriptor()); } } diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/matcher/MuzzleGradlePluginUtil.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/matcher/MuzzleGradlePluginUtil.java index 756584a89c..890122477d 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/matcher/MuzzleGradlePluginUtil.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/matcher/MuzzleGradlePluginUtil.java @@ -69,7 +69,7 @@ public final class MuzzleGradlePluginUtil { "MUZZLE PASSED " + instrumentationModule.getClass().getSimpleName() + " BUT FAILURE WAS EXPECTED"); - throw new RuntimeException("Instrumentation unexpectedly passed Muzzle validation"); + throw new IllegalStateException("Instrumentation unexpectedly passed Muzzle validation"); } else if (!passed && assertPass) { System.err.println( "FAILED MUZZLE VALIDATION: " @@ -83,7 +83,7 @@ public final class MuzzleGradlePluginUtil { for (Mismatch mismatch : mismatches) { System.err.println("-- " + mismatch); } - throw new RuntimeException("Instrumentation failed Muzzle validation"); + throw new IllegalStateException("Instrumentation failed Muzzle validation"); } validatedModulesCount++; @@ -111,7 +111,7 @@ public final class MuzzleGradlePluginUtil { if (validatedModulesCount == 0) { String errorMessage = "Did not found any InstrumentationModule to validate!"; System.err.println(errorMessage); - throw new RuntimeException(errorMessage); + throw new IllegalStateException(errorMessage); } } @@ -145,7 +145,7 @@ public final class MuzzleGradlePluginUtil { "Unexpected exception printing references for " + instrumentationModule.getClass().getName(); System.out.println(message); - throw new RuntimeException(message, e); + throw new IllegalStateException(message, e); } } } diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/test/BadAdvice.java b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/test/BadAdvice.java index d3c8c7bd27..32b4433506 100644 --- a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/test/BadAdvice.java +++ b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/test/BadAdvice.java @@ -11,7 +11,7 @@ public class BadAdvice { @Advice.OnMethodExit(suppress = Throwable.class) public static void throwAnException(@Advice.Return(readOnly = false) boolean returnVal) { returnVal = true; - throw new RuntimeException("Test Exception"); + throw new IllegalStateException("Test Exception"); } public static class NoOpAdvice { diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/A.java b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/A.java index 3d0cb737fd..3ff6a3854a 100644 --- a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/A.java +++ b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/A.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.tooling.bytebuddy.matcher.testclasses; +@SuppressWarnings("ClassNamedLikeTypeParameter") public interface A { void a(); } diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/B.java b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/B.java index af7b94c1b7..17cd17e7ed 100644 --- a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/B.java +++ b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/B.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.tooling.bytebuddy.matcher.testclasses; +@SuppressWarnings("ClassNamedLikeTypeParameter") public interface B extends A { @Trace void b(); diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/C.java b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/C.java index ff40c0e998..0f033f0f3b 100644 --- a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/C.java +++ b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/C.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.tooling.bytebuddy.matcher.testclasses; +@SuppressWarnings("ClassNamedLikeTypeParameter") public interface C extends A, B { void c(); } diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/D.java b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/D.java index 64994ce0c9..20de394cbd 100644 --- a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/D.java +++ b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/D.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.tooling.bytebuddy.matcher.testclasses; +@SuppressWarnings("ClassNamedLikeTypeParameter") public interface D extends A, B, C { @Trace void d(); diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/E.java b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/E.java index 0495a94aaf..4a66756f23 100644 --- a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/E.java +++ b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/E.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.tooling.bytebuddy.matcher.testclasses; +@SuppressWarnings("ClassNamedLikeTypeParameter") public interface E extends B, C, D { void e(); } diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/F.java b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/F.java index 64dd9fdff0..9e7e0f901a 100644 --- a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/F.java +++ b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/F.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.tooling.bytebuddy.matcher.testclasses; +@SuppressWarnings("ClassNamedLikeTypeParameter") public abstract class F implements E { @Trace public abstract void f(); diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/G.java b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/G.java index bab5c07f36..650769c0cf 100644 --- a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/G.java +++ b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/bytebuddy/matcher/testclasses/G.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.tooling.bytebuddy.matcher.testclasses; +@SuppressWarnings("ClassNamedLikeTypeParameter") public abstract class G extends F { public void g() {} } diff --git a/javaagent/src/test/java/io/opentelemetry/javaagent/IntegrationTestUtils.java b/javaagent/src/test/java/io/opentelemetry/javaagent/IntegrationTestUtils.java index 63c315c67c..e58f0317cc 100644 --- a/javaagent/src/test/java/io/opentelemetry/javaagent/IntegrationTestUtils.java +++ b/javaagent/src/test/java/io/opentelemetry/javaagent/IntegrationTestUtils.java @@ -37,7 +37,7 @@ public class IntegrationTestUtils { /** Returns the classloader the core agent is running on. */ public static ClassLoader getAgentClassLoader() { - return getAgentFieldClassloader("AGENT_CLASSLOADER"); + return getAgentFieldClassloader("agentClassloader"); } private static ClassLoader getAgentFieldClassloader(String fieldName) { @@ -149,7 +149,7 @@ public class IntegrationTestUtils { } } - throw new RuntimeException("Agent jar not found"); + throw new IllegalStateException("Agent jar not found"); } public static int runOnSeparateJvm( diff --git a/javaagent/src/test/java/jvmbootstraptest/AgentLoadedChecker.java b/javaagent/src/test/java/jvmbootstraptest/AgentLoadedChecker.java index dc6870f757..fd82db5467 100644 --- a/javaagent/src/test/java/jvmbootstraptest/AgentLoadedChecker.java +++ b/javaagent/src/test/java/jvmbootstraptest/AgentLoadedChecker.java @@ -16,7 +16,7 @@ public class AgentLoadedChecker { emptyClassLoader.loadClass("io.opentelemetry.javaagent.bootstrap.AgentInitializer"); if (agentClass.getClassLoader() != null) { - throw new RuntimeException( + throw new IllegalStateException( "Agent loaded into classloader other than bootstrap: " + agentClass.getClassLoader()); } } diff --git a/javaagent/src/test/java/jvmbootstraptest/LogLevelChecker.java b/javaagent/src/test/java/jvmbootstraptest/LogLevelChecker.java index 97820b095c..842644a58e 100644 --- a/javaagent/src/test/java/jvmbootstraptest/LogLevelChecker.java +++ b/javaagent/src/test/java/jvmbootstraptest/LogLevelChecker.java @@ -13,7 +13,7 @@ public class LogLevelChecker { System.getProperty("io.opentelemetry.javaagent.slf4j.simpleLogger.defaultLogLevel"); if ((str == null) || (str != null && !str.equalsIgnoreCase("debug"))) { - throw new RuntimeException("debug mode not set"); + throw new IllegalStateException("debug mode not set"); } } } diff --git a/javaagent/src/test/java/jvmbootstraptest/MyClassLoaderIsNotBootstrap.java b/javaagent/src/test/java/jvmbootstraptest/MyClassLoaderIsNotBootstrap.java index 3b217b837c..126796f9a6 100644 --- a/javaagent/src/test/java/jvmbootstraptest/MyClassLoaderIsNotBootstrap.java +++ b/javaagent/src/test/java/jvmbootstraptest/MyClassLoaderIsNotBootstrap.java @@ -8,7 +8,8 @@ package jvmbootstraptest; public class MyClassLoaderIsNotBootstrap { public static void main(String[] args) { if (MyClassLoaderIsNotBootstrap.class.getClassLoader() == null) { - throw new RuntimeException("Application level class was loaded by bootstrap classloader"); + throw new IllegalStateException( + "Application level class was loaded by bootstrap classloader"); } } } diff --git a/load-generator/src/main/java/io/opentelemetry/loadgenerator/LoadGenerator.java b/load-generator/src/main/java/io/opentelemetry/loadgenerator/LoadGenerator.java index 3243c39151..397cc57893 100644 --- a/load-generator/src/main/java/io/opentelemetry/loadgenerator/LoadGenerator.java +++ b/load-generator/src/main/java/io/opentelemetry/loadgenerator/LoadGenerator.java @@ -6,10 +6,12 @@ package io.opentelemetry.loadgenerator; import com.google.common.util.concurrent.RateLimiter; +import com.google.common.util.concurrent.Uninterruptibles; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.context.Scope; +import java.time.Duration; import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; @@ -74,7 +76,7 @@ public class LoadGenerator implements Callable { } while (true) { - Thread.sleep(printInterval * 1000); + Uninterruptibles.sleepUninterruptibly(Duration.ofSeconds(printInterval)); long currentTracesSent = tracesSent.get(); long intervalEnd = System.currentTimeMillis(); diff --git a/smoke-tests/matrix/servlet-3.0/src/main/java/io/opentelemetry/smoketest/matrix/ExceptionRequestListener.java b/smoke-tests/matrix/servlet-3.0/src/main/java/io/opentelemetry/smoketest/matrix/ExceptionRequestListener.java index ee4d8e33d3..468949f89f 100644 --- a/smoke-tests/matrix/servlet-3.0/src/main/java/io/opentelemetry/smoketest/matrix/ExceptionRequestListener.java +++ b/smoke-tests/matrix/servlet-3.0/src/main/java/io/opentelemetry/smoketest/matrix/ExceptionRequestListener.java @@ -8,14 +8,14 @@ public class ExceptionRequestListener implements ServletRequestListener { @Override public void requestDestroyed(ServletRequestEvent sre) { if ("true".equals(sre.getServletRequest().getParameter("throwOnRequestDestroyed"))) { - throw new RuntimeException("This is expected"); + throw new IllegalStateException("This is expected"); } } @Override public void requestInitialized(ServletRequestEvent sre) { if ("true".equals(sre.getServletRequest().getParameter("throwOnRequestInitialized"))) { - throw new RuntimeException("This is expected"); + throw new IllegalStateException("This is expected"); } } } diff --git a/smoke-tests/matrix/servlet-3.0/src/main/java/io/opentelemetry/smoketest/matrix/ExceptionServlet.java b/smoke-tests/matrix/servlet-3.0/src/main/java/io/opentelemetry/smoketest/matrix/ExceptionServlet.java index c53307e239..3b55609295 100644 --- a/smoke-tests/matrix/servlet-3.0/src/main/java/io/opentelemetry/smoketest/matrix/ExceptionServlet.java +++ b/smoke-tests/matrix/servlet-3.0/src/main/java/io/opentelemetry/smoketest/matrix/ExceptionServlet.java @@ -14,6 +14,6 @@ public class ExceptionServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { - throw new RuntimeException("This is expected"); + throw new IllegalStateException("This is expected"); } } diff --git a/smoke-tests/matrix/servlet-5.0/src/main/java/io/opentelemetry/smoketest/matrix/ExceptionRequestListener.java b/smoke-tests/matrix/servlet-5.0/src/main/java/io/opentelemetry/smoketest/matrix/ExceptionRequestListener.java index 74e0569526..435fc5c8e4 100644 --- a/smoke-tests/matrix/servlet-5.0/src/main/java/io/opentelemetry/smoketest/matrix/ExceptionRequestListener.java +++ b/smoke-tests/matrix/servlet-5.0/src/main/java/io/opentelemetry/smoketest/matrix/ExceptionRequestListener.java @@ -8,14 +8,14 @@ public class ExceptionRequestListener implements ServletRequestListener { @Override public void requestDestroyed(ServletRequestEvent sre) { if ("true".equals(sre.getServletRequest().getParameter("throwOnRequestDestroyed"))) { - throw new RuntimeException("This is expected"); + throw new IllegalStateException("This is expected"); } } @Override public void requestInitialized(ServletRequestEvent sre) { if ("true".equals(sre.getServletRequest().getParameter("throwOnRequestInitialized"))) { - throw new RuntimeException("This is expected"); + throw new IllegalStateException("This is expected"); } } } diff --git a/smoke-tests/matrix/servlet-5.0/src/main/java/io/opentelemetry/smoketest/matrix/ExceptionServlet.java b/smoke-tests/matrix/servlet-5.0/src/main/java/io/opentelemetry/smoketest/matrix/ExceptionServlet.java index 65f4784233..ae4e4c4fb0 100644 --- a/smoke-tests/matrix/servlet-5.0/src/main/java/io/opentelemetry/smoketest/matrix/ExceptionServlet.java +++ b/smoke-tests/matrix/servlet-5.0/src/main/java/io/opentelemetry/smoketest/matrix/ExceptionServlet.java @@ -14,6 +14,6 @@ public class ExceptionServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { - throw new RuntimeException("This is expected"); + throw new IllegalStateException("This is expected"); } } diff --git a/smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/ContainerLogFrameConsumer.java b/smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/ContainerLogFrameConsumer.java index 8dd1737e69..63c68e3295 100644 --- a/smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/ContainerLogFrameConsumer.java +++ b/smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/ContainerLogFrameConsumer.java @@ -39,7 +39,7 @@ public class ContainerLogFrameConsumer } } - private LineType getLineType(Frame frame) { + private static LineType getLineType(Frame frame) { switch (frame.getStreamType()) { case STDOUT: return LineType.STDOUT; diff --git a/smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/Slf4jDockerLogLineListener.java b/smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/Slf4jDockerLogLineListener.java index 7128d7fd1b..fca313b415 100644 --- a/smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/Slf4jDockerLogLineListener.java +++ b/smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/Slf4jDockerLogLineListener.java @@ -23,7 +23,6 @@ public class Slf4jDockerLogLineListener implements ContainerLogHandler.Listener this.logger.error("STDERR: {}", normalizedText); break; case STDOUT: - default: this.logger.info("STDOUT: {}", normalizedText); break; } diff --git a/smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/WindowsTestContainerManager.java b/smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/WindowsTestContainerManager.java index 4ff52f76c3..f8f079551c 100644 --- a/smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/WindowsTestContainerManager.java +++ b/smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/WindowsTestContainerManager.java @@ -41,6 +41,7 @@ import okhttp3.Response; import org.apache.commons.compress.archivers.tar.TarArchiveEntry; import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream; import org.apache.commons.io.IOUtils; +import org.checkerframework.checker.nullness.qual.Nullable; import org.rnorth.ducttape.TimeoutException; import org.rnorth.ducttape.ratelimits.RateLimiter; import org.rnorth.ducttape.ratelimits.RateLimiterBuilder; @@ -62,10 +63,10 @@ public class WindowsTestContainerManager extends AbstractTestContainerManager { new DefaultDockerClientConfig.Builder().withDockerHost(NPIPE_URI).build(), new ApacheDockerHttpClient.Builder().dockerHost(URI.create(NPIPE_URI)).build()); - private String natNetworkId = null; - private Container backend; - private Container collector; - private Container target; + @Nullable private String natNetworkId = null; + @Nullable private Container backend; + @Nullable private Container collector; + @Nullable private Container target; @Override protected void startEnvironment() { @@ -101,7 +102,7 @@ public class WindowsTestContainerManager extends AbstractTestContainerManager { new Ports.Binding(null, null), ExposedPort.tcp(BACKEND_PORT)))), containerId -> {}, new HttpWaiter(BACKEND_PORT, "/health", Duration.ofSeconds(60)), - true, + /* inspect= */ true, backendLogger); String collectorImageName = @@ -126,11 +127,11 @@ public class WindowsTestContainerManager extends AbstractTestContainerManager { copyFileToContainer( containerId, IOUtils.toByteArray(configFileStream), COLLECTOR_CONFIG_FILE_PATH); } catch (IOException e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } }, new NoOpWaiter(), - false, + /* inspect= */ false, collectorLogger); } @@ -200,11 +201,11 @@ public class WindowsTestContainerManager extends AbstractTestContainerManager { copyFileToContainer( containerId, IOUtils.toByteArray(agentFileStream), "/" + TARGET_AGENT_FILENAME); } catch (Exception e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } }, createTargetWaiter(waitStrategy), - true, + /* inspect= */ true, logger); return null; } @@ -221,7 +222,7 @@ public class WindowsTestContainerManager extends AbstractTestContainerManager { try { client.pullImageCmd(imageName).exec(new PullImageResultCallback()).awaitCompletion(); } catch (InterruptedException e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } } @@ -284,7 +285,7 @@ public class WindowsTestContainerManager extends AbstractTestContainerManager { if (binding != null && binding.length > 0 && binding[0] != null) { return Integer.parseInt(binding[0].getHostPortSpec()); } else { - throw new RuntimeException("Port " + internalPort + " not mapped to host."); + throw new IllegalStateException("Port " + internalPort + " not mapped to host."); } } @@ -346,7 +347,7 @@ public class WindowsTestContainerManager extends AbstractTestContainerManager { } } - private Waiter createTargetWaiter(TargetWaitStrategy strategy) { + private static Waiter createTargetWaiter(TargetWaitStrategy strategy) { if (strategy instanceof TargetWaitStrategy.Log) { TargetWaitStrategy.Log details = (TargetWaitStrategy.Log) strategy; return new LogWaiter(Pattern.compile(details.regex), details.timeout); @@ -401,7 +402,7 @@ public class WindowsTestContainerManager extends AbstractTestContainerManager { try { lineHit.await(timeout.toMillis(), TimeUnit.MILLISECONDS); } catch (InterruptedException e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } logger.info("Done waiting for container {}/{}", container.imageName, container.containerId); @@ -410,7 +411,7 @@ public class WindowsTestContainerManager extends AbstractTestContainerManager { private static class HttpWaiter implements Waiter { private static final OkHttpClient CLIENT = - new OkHttpClient.Builder().callTimeout(1, TimeUnit.SECONDS).build(); + new OkHttpClient.Builder().callTimeout(Duration.ofSeconds(1)).build(); private final int internalPort; private final String path; @@ -451,18 +452,19 @@ public class WindowsTestContainerManager extends AbstractTestContainerManager { Response response = CLIENT.newCall(request).execute(); if (response.code() != 200) { - throw new RuntimeException( + throw new IllegalStateException( "Received status code " + response.code() + " from " + request.url()); } } catch (IOException e) { - throw new RuntimeException(e); + throw new IllegalStateException(e); } }); return true; }); } catch (TimeoutException e) { - throw new RuntimeException("Timed out waiting for container " + container.imageName, e); + throw new IllegalStateException( + "Timed out waiting for container " + container.imageName, e); } logger.info("Done waiting for container {}/{}", container.imageName, container.containerId); @@ -511,7 +513,8 @@ public class WindowsTestContainerManager extends AbstractTestContainerManager { return true; }); } catch (TimeoutException e) { - throw new RuntimeException("Timed out waiting for container " + container.imageName, e); + throw new IllegalStateException( + "Timed out waiting for container " + container.imageName, e); } logger.info("Done waiting for container {}/{}", container.imageName, container.containerId); diff --git a/testing-common/integration-tests/src/test/groovy/AgentTestRunnerTest.groovy b/testing-common/integration-tests/src/test/groovy/AgentTestRunnerTest.groovy index a642d6d560..f683a8dd6c 100644 --- a/testing-common/integration-tests/src/test/groovy/AgentTestRunnerTest.groovy +++ b/testing-common/integration-tests/src/test/groovy/AgentTestRunnerTest.groovy @@ -124,7 +124,7 @@ class AgentTestRunnerTest extends AgentInstrumentationSpecification { try { return ClassPath.from(testClassLoader) } catch (IOException e) { - throw new RuntimeException(e) + throw new IllegalStateException(e) } } } diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/ClasspathUtils.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/ClasspathUtils.java index e2f0af53a8..f85e1d7620 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/ClasspathUtils.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/ClasspathUtils.java @@ -21,7 +21,7 @@ import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; import java.util.jar.Manifest; -public class ClasspathUtils { +public final class ClasspathUtils { public static byte[] convertToByteArray(InputStream resource) throws IOException { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); @@ -159,4 +159,6 @@ public class ClasspathUtils { return className; } } + + private ClasspathUtils() {} } diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/ExceptionUtils.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/ExceptionUtils.java index e00909ffd1..62b0cf5d1f 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/ExceptionUtils.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/ExceptionUtils.java @@ -5,7 +5,7 @@ package io.opentelemetry.instrumentation.test.utils; -public class ExceptionUtils { +public final class ExceptionUtils { static RuntimeException sneakyThrow(Throwable t) { if (t == null) { @@ -19,4 +19,6 @@ public class ExceptionUtils { private static T sneakyThrow0(Throwable t) throws T { throw (T) t; } + + private ExceptionUtils() {} } diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/LoggerUtils.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/LoggerUtils.java index 171be1f4a3..42b8804117 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/LoggerUtils.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/LoggerUtils.java @@ -8,7 +8,7 @@ package io.opentelemetry.instrumentation.test.utils; import ch.qos.logback.classic.Level; import org.slf4j.Logger; -public class LoggerUtils { +public final class LoggerUtils { public static void setLevel(Logger logger, Level level) { // Some appserver tests (Jetty 11) somehow cause our logback logger not to be used, so we must // check the type @@ -16,4 +16,6 @@ public class LoggerUtils { ((ch.qos.logback.classic.Logger) logger).setLevel(level); } } + + private LoggerUtils() {} } diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/OkHttpUtils.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/OkHttpUtils.java index 0b27a60e4f..8620bfeb15 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/OkHttpUtils.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/OkHttpUtils.java @@ -12,7 +12,7 @@ import okhttp3.logging.HttpLoggingInterceptor.Level; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class OkHttpUtils { +public final class OkHttpUtils { private static final Logger CLIENT_LOGGER = LoggerFactory.getLogger("http-client"); @@ -49,4 +49,6 @@ public class OkHttpUtils { public static OkHttpClient client(boolean followRedirects) { return clientBuilder().followRedirects(followRedirects).build(); } + + private OkHttpUtils() {} } diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/PortAllocator.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/PortAllocator.java index ab04316041..985f260bda 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/PortAllocator.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/PortAllocator.java @@ -107,7 +107,7 @@ class PortAllocator { } static class PortBinder { - static PortBinder INSTANCE = new PortBinder(); + static final PortBinder INSTANCE = new PortBinder(); Closeable bind(int port) { try { diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/PortUtils.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/PortUtils.java index f0a6ea1dfb..acddb36b76 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/PortUtils.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/PortUtils.java @@ -9,9 +9,9 @@ import java.io.IOException; import java.net.Socket; import java.util.concurrent.TimeUnit; -public class PortUtils { +public final class PortUtils { - public static int UNUSABLE_PORT = 61; + public static final int UNUSABLE_PORT = 61; private static final PortAllocator portAllocator = new PortAllocator(); @@ -45,11 +45,11 @@ public class PortUtils { TimeUnit.MILLISECONDS.sleep(100); } catch (InterruptedException e) { Thread.currentThread().interrupt(); - throw new RuntimeException("Interrupted while waiting for " + port + " to be opened"); + throw new IllegalStateException("Interrupted while waiting for " + port + " to be opened"); } } - throw new RuntimeException("Timed out waiting for port " + port + " to be opened"); + throw new IllegalStateException("Timed out waiting for port " + port + " to be opened"); } public static void waitForPortToOpen(int port, long timeout, TimeUnit unit, Process process) { @@ -59,13 +59,13 @@ public class PortUtils { try { Thread.sleep(100); } catch (InterruptedException e) { - throw new RuntimeException("Interrupted while waiting for " + port + " to be opened"); + throw new IllegalStateException("Interrupted while waiting for " + port + " to be opened"); } // Note: we should have used `process.isAlive()` here but it is java8 only try { process.exitValue(); - throw new RuntimeException("Process died before port " + port + " was opened"); + throw new IllegalStateException("Process died before port " + port + " was opened"); } catch (IllegalThreadStateException e) { // process is still alive, things are good. } @@ -75,6 +75,8 @@ public class PortUtils { } } - throw new RuntimeException("Timed out waiting for port " + port + " to be opened"); + throw new IllegalStateException("Timed out waiting for port " + port + " to be opened"); } + + private PortUtils() {} } diff --git a/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/AgentClassLoaderAccess.java b/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/AgentClassLoaderAccess.java index 7b92ec238a..6fa6e34c85 100644 --- a/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/AgentClassLoaderAccess.java +++ b/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/AgentClassLoaderAccess.java @@ -16,11 +16,11 @@ public final class AgentClassLoaderAccess { Class agentInitializerClass = ClassLoader.getSystemClassLoader() .loadClass("io.opentelemetry.javaagent.bootstrap.AgentInitializer"); - Field agentClassloader = agentInitializerClass.getDeclaredField("AGENT_CLASSLOADER"); + Field agentClassloader = agentInitializerClass.getDeclaredField("agentClassloader"); agentClassloader.setAccessible(true); agentClassLoader = (ClassLoader) agentClassloader.get(null); } catch (Throwable t) { - throw new Error("Could not access agent classLoader"); + throw new AssertionError("Could not access agent classLoader", t); } } @@ -32,7 +32,7 @@ public final class AgentClassLoaderAccess { try { return agentClassLoader.loadClass(name); } catch (ClassNotFoundException e) { - throw new Error("Could not load class from agent classloader", e); + throw new AssertionError("Could not load class from agent classloader", e); } } diff --git a/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/AgentTestingExporterAccess.java b/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/AgentTestingExporterAccess.java index 4beb8bf8c3..874128bf80 100644 --- a/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/AgentTestingExporterAccess.java +++ b/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/AgentTestingExporterAccess.java @@ -108,7 +108,7 @@ public final class AgentTestingExporterAccess { "forceFlushCalled", MethodType.methodType(boolean.class)); } catch (Exception e) { - throw new Error("Error accessing fields with reflection.", e); + throw new AssertionError("Error accessing fields with reflection.", e); } } @@ -116,7 +116,7 @@ public final class AgentTestingExporterAccess { try { reset.invokeExact(); } catch (Throwable t) { - throw new Error("Could not invoke reset", t); + throw new AssertionError("Could not invoke reset", t); } } @@ -124,7 +124,7 @@ public final class AgentTestingExporterAccess { try { return (boolean) forceFlushCalled.invokeExact(); } catch (Throwable t) { - throw new Error("Could not invoke forceFlushCalled", t); + throw new AssertionError("Could not invoke forceFlushCalled", t); } } @@ -134,7 +134,7 @@ public final class AgentTestingExporterAccess { try { exportRequests = (List) getSpanExportRequests.invokeExact(); } catch (Throwable t) { - throw new Error("Could not invoke getSpanExportRequests", t); + throw new AssertionError("Could not invoke getSpanExportRequests", t); } List allResourceSpans = @@ -144,7 +144,7 @@ public final class AgentTestingExporterAccess { try { return ExportTraceServiceRequest.parseFrom(serialized); } catch (InvalidProtocolBufferException e) { - throw new Error(e); + throw new AssertionError(e); } }) .flatMap(request -> request.getResourceSpansList().stream()) @@ -227,7 +227,7 @@ public final class AgentTestingExporterAccess { try { exportRequests = (List) getMetricExportRequests.invokeExact(); } catch (Throwable t) { - throw new Error("Could not invoke getMetricExportRequests", t); + throw new AssertionError("Could not invoke getMetricExportRequests", t); } List allResourceMetrics = @@ -237,7 +237,7 @@ public final class AgentTestingExporterAccess { try { return ExportMetricsServiceRequest.parseFrom(serialized); } catch (InvalidProtocolBufferException e) { - throw new Error(e); + throw new AssertionError(e); } }) .flatMap(request -> request.getResourceMetricsList().stream()) diff --git a/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/Java8BytecodeBridge.java b/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/Java8BytecodeBridge.java index cc5eb9f4e1..4df373dcd1 100644 --- a/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/Java8BytecodeBridge.java +++ b/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/Java8BytecodeBridge.java @@ -18,4 +18,6 @@ public final class Java8BytecodeBridge { public static Context currentContext() { return Context.current(); } + + private Java8BytecodeBridge() {} } diff --git a/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/TestAgentListenerAccess.java b/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/TestAgentListenerAccess.java index d0fb847e36..81e37f8ce6 100644 --- a/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/TestAgentListenerAccess.java +++ b/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/TestAgentListenerAccess.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.function.BiFunction; import java.util.function.Function; -public class TestAgentListenerAccess { +public final class TestAgentListenerAccess { private static final MethodHandle reset; private static final MethodHandle getInstrumentationErrorCount; @@ -45,7 +45,7 @@ public class TestAgentListenerAccess { "addSkipErrorCondition", methodType(void.class, BiFunction.class)); } catch (Throwable t) { - throw new Error("Could not initialize accessors for TestAgentListener.", t); + throw new AssertionError("Could not initialize accessors for TestAgentListener.", t); } } @@ -53,7 +53,7 @@ public class TestAgentListenerAccess { try { reset.invokeExact(); } catch (Throwable t) { - throw new Error("Could not invoke TestAgentListener.reset", t); + throw new AssertionError("Could not invoke TestAgentListener.reset", t); } } @@ -61,7 +61,8 @@ public class TestAgentListenerAccess { try { return (int) getInstrumentationErrorCount.invokeExact(); } catch (Throwable t) { - throw new Error("Could not invoke TestAgentListener.getInstrumentationErrorCount", t); + throw new AssertionError( + "Could not invoke TestAgentListener.getInstrumentationErrorCount", t); } } @@ -70,7 +71,8 @@ public class TestAgentListenerAccess { try { return (List) getIgnoredButTransformedClassNames.invokeExact(); } catch (Throwable t) { - throw new Error("Could not invoke TestAgentListener.getIgnoredButTransformedClassNames"); + throw new AssertionError( + "Could not invoke TestAgentListener.getIgnoredButTransformedClassNames", t); } } @@ -78,7 +80,8 @@ public class TestAgentListenerAccess { try { addSkipTransformationCondition.invokeExact(condition); } catch (Throwable t) { - throw new Error("Could not invoke TestAgentListener.addSkipTransformationCondition"); + throw new AssertionError( + "Could not invoke TestAgentListener.addSkipTransformationCondition", t); } } @@ -86,7 +89,9 @@ public class TestAgentListenerAccess { try { addSkipErrorCondition.invokeExact(condition); } catch (Throwable t) { - throw new Error("Could not invoke TestAgentListener.addSkipErrorCondition"); + throw new AssertionError("Could not invoke TestAgentListener.addSkipErrorCondition", t); } } + + private TestAgentListenerAccess() {} } diff --git a/testing-common/src/test/java/io/opentelemetry/instrumentation/TestHelperClasses.java b/testing-common/src/test/java/io/opentelemetry/instrumentation/TestHelperClasses.java index 1ca533ff73..9946a15382 100644 --- a/testing-common/src/test/java/io/opentelemetry/instrumentation/TestHelperClasses.java +++ b/testing-common/src/test/java/io/opentelemetry/instrumentation/TestHelperClasses.java @@ -23,7 +23,7 @@ public class TestHelperClasses { return 54321; } - private String getStr() { + private static String getStr() { return "abc"; } } diff --git a/testing-common/src/test/java/io/opentelemetry/instrumentation/test/utils/PortAllocatorTest.java b/testing-common/src/test/java/io/opentelemetry/instrumentation/test/utils/PortAllocatorTest.java index 5b870f5ff7..8f1e8e5478 100644 --- a/testing-common/src/test/java/io/opentelemetry/instrumentation/test/utils/PortAllocatorTest.java +++ b/testing-common/src/test/java/io/opentelemetry/instrumentation/test/utils/PortAllocatorTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.instrumentation.test.utils; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + import java.io.Closeable; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -24,11 +26,8 @@ public class PortAllocatorTest { } Assertions.assertEquals(next, portAllocator.getPorts(10)); Assertions.assertEquals(12101, portAllocator.getPorts(PortAllocator.CHUNK_SIZE - 1)); - try { - Assertions.assertEquals(next, portAllocator.getPorts(PortAllocator.CHUNK_SIZE + 1)); - Assertions.fail("should not be able to allocate more than PORT_RANGE_STEP consecutive ports"); - } catch (IllegalStateException ignored) { - } + assertThatThrownBy(() -> portAllocator.getPorts(PortAllocator.CHUNK_SIZE + 1)) + .isInstanceOf(IllegalStateException.class); } @Test @@ -42,11 +41,7 @@ public class PortAllocatorTest { next += 2; } } - try { - Assertions.assertEquals(next, portAllocator.getPorts(2)); - Assertions.fail("should not be able to allocate consecutive ports"); - } catch (IllegalStateException ignored) { - } + assertThatThrownBy(() -> portAllocator.getPorts(2)).isInstanceOf(IllegalStateException.class); } private static PortAllocator getPortAllocator(PortTest portTest) { diff --git a/testing-common/src/test/java/muzzle/HelperReferenceWrapperTestClasses.java b/testing-common/src/test/java/muzzle/HelperReferenceWrapperTestClasses.java index 64a0deff21..672fa26460 100644 --- a/testing-common/src/test/java/muzzle/HelperReferenceWrapperTestClasses.java +++ b/testing-common/src/test/java/muzzle/HelperReferenceWrapperTestClasses.java @@ -5,7 +5,7 @@ package muzzle; -@SuppressWarnings("UnusedMethod") +@SuppressWarnings({"UnusedMethod", "MethodCanBeStatic"}) public class HelperReferenceWrapperTestClasses { interface Interface1 { void foo(); diff --git a/testing-common/src/test/java/muzzle/TestClasses.java b/testing-common/src/test/java/muzzle/TestClasses.java index 540d702961..3f97567739 100644 --- a/testing-common/src/test/java/muzzle/TestClasses.java +++ b/testing-common/src/test/java/muzzle/TestClasses.java @@ -10,6 +10,7 @@ import io.opentelemetry.instrumentation.OtherTestHelperClasses; import io.opentelemetry.instrumentation.TestHelperClasses.Helper; import net.bytebuddy.asm.Advice; +@SuppressWarnings("ClassNamedLikeTypeParameter") public class TestClasses { public static class MethodBodyAdvice { @@ -43,7 +44,7 @@ public class TestClasses { return s; } - @SuppressWarnings("UnusedMethod") + @SuppressWarnings({"UnusedMethod", "MethodCanBeStatic"}) private void privateStuff() {} protected void protectedMethod() {} diff --git a/testing/agent-exporter/src/main/java/io/opentelemetry/javaagent/testing/exporter/OtlpInMemoryMetricExporter.java b/testing/agent-exporter/src/main/java/io/opentelemetry/javaagent/testing/exporter/OtlpInMemoryMetricExporter.java index 2d949d6faa..888020227f 100644 --- a/testing/agent-exporter/src/main/java/io/opentelemetry/javaagent/testing/exporter/OtlpInMemoryMetricExporter.java +++ b/testing/agent-exporter/src/main/java/io/opentelemetry/javaagent/testing/exporter/OtlpInMemoryMetricExporter.java @@ -58,7 +58,7 @@ class OtlpInMemoryMetricExporter implements MetricExporter { try { collector.start(); } catch (IOException e) { - throw new Error("Could not start in-process collector.", e); + throw new AssertionError("Could not start in-process collector.", e); } delegate = diff --git a/testing/agent-exporter/src/main/java/io/opentelemetry/javaagent/testing/exporter/OtlpInMemorySpanExporter.java b/testing/agent-exporter/src/main/java/io/opentelemetry/javaagent/testing/exporter/OtlpInMemorySpanExporter.java index 63fe92e813..c4a4be89c2 100644 --- a/testing/agent-exporter/src/main/java/io/opentelemetry/javaagent/testing/exporter/OtlpInMemorySpanExporter.java +++ b/testing/agent-exporter/src/main/java/io/opentelemetry/javaagent/testing/exporter/OtlpInMemorySpanExporter.java @@ -58,7 +58,7 @@ class OtlpInMemorySpanExporter implements SpanExporter { try { collector.start(); } catch (IOException e) { - throw new Error("Could not start in-process collector.", e); + throw new AssertionError("Could not start in-process collector.", e); } delegate =