From 37498bb33bb64c4705adab318198016c2deaff24 Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Thu, 23 Oct 2025 15:54:03 -0400 Subject: [PATCH] Disable finatra controller spans by default --- docs/instrumentation-list.yaml | 15 +++++++++++---- .../finatra-2.9/javaagent/build.gradle.kts | 3 +++ .../finatra/FinatraSingletons.java | 2 ++ instrumentation/finatra-2.9/metadata.yaml | 12 +++++++++++- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/docs/instrumentation-list.yaml b/docs/instrumentation-list.yaml index e813be384326..c66abd7aba43 100644 --- a/docs/instrumentation-list.yaml +++ b/docs/instrumentation-list.yaml @@ -3786,10 +3786,12 @@ libraries: - com.twitter:finagle-http_2.12:[23.11.0,] finatra: - name: finatra-2.9 - description: This instrumentation for the Finatra web framework augments the telemetry - generated by the underlying Netty instrumentation. It provides more specific, - high-level context, such as route information, to the spans generated by Netty. + description: | + This instrumentation enriches HTTP server spans with route information, and enables controller spans for the Finatra web framework (controller spans are disabled by default). library_link: https://github.com/twitter/finatra + features: + - HTTP_ROUTE + - CONTROLLER_SPANS source_path: instrumentation/finatra-2.9 scope: name: io.opentelemetry.finatra-2.9 @@ -3797,8 +3799,13 @@ libraries: javaagent: - com.twitter:finatra-http_2.11:[2.9.0,] - com.twitter:finatra-http_2.12:[2.9.0,] + configurations: + - name: otel.instrumentation.common.experimental.controller-telemetry.enabled + description: Enables the creation of experimental controller spans. + type: boolean + default: false telemetry: - - when: default + - when: otel.instrumentation.common.experimental.controller-telemetry.enabled=true spans: - span_kind: INTERNAL attributes: diff --git a/instrumentation/finatra-2.9/javaagent/build.gradle.kts b/instrumentation/finatra-2.9/javaagent/build.gradle.kts index cbf109a0e37e..c8671e6c4c13 100644 --- a/instrumentation/finatra-2.9/javaagent/build.gradle.kts +++ b/instrumentation/finatra-2.9/javaagent/build.gradle.kts @@ -86,7 +86,10 @@ tasks { jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED") jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") + jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") + systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false") + systemProperty("metadataConfig", "otel.instrumentation.common.experimental.controller-telemetry.enabled=true") } } diff --git a/instrumentation/finatra-2.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/finatra/FinatraSingletons.java b/instrumentation/finatra-2.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/finatra/FinatraSingletons.java index 5572555b0ff4..bc08b04d5435 100644 --- a/instrumentation/finatra-2.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/finatra/FinatraSingletons.java +++ b/instrumentation/finatra-2.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/finatra/FinatraSingletons.java @@ -16,6 +16,7 @@ import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRouteSource; import io.opentelemetry.instrumentation.api.util.VirtualField; +import io.opentelemetry.javaagent.bootstrap.internal.ExperimentalConfig; public final class FinatraSingletons { @@ -35,6 +36,7 @@ public final class FinatraSingletons { ? ClassNames.simpleName(request.controllerClass()) : "") .addAttributesExtractor(CodeAttributesExtractor.create(codeAttributesGetter)) + .setEnabled(ExperimentalConfig.get().controllerTelemetryEnabled()) .buildInstrumenter(); } diff --git a/instrumentation/finatra-2.9/metadata.yaml b/instrumentation/finatra-2.9/metadata.yaml index ce91068a77b8..31d80bce6ee8 100644 --- a/instrumentation/finatra-2.9/metadata.yaml +++ b/instrumentation/finatra-2.9/metadata.yaml @@ -1,2 +1,12 @@ -description: This instrumentation for the Finatra web framework augments the telemetry generated by the underlying Netty instrumentation. It provides more specific, high-level context, such as route information, to the spans generated by Netty. +description: > + This instrumentation enriches HTTP server spans with route information, and enables controller + spans for the Finatra web framework (controller spans are disabled by default). library_link: https://github.com/twitter/finatra +features: + - HTTP_ROUTE + - CONTROLLER_SPANS +configurations: + - name: otel.instrumentation.common.experimental.controller-telemetry.enabled + description: Enables the creation of experimental controller spans. + type: boolean + default: false