diff --git a/instrumentation/jdbc/library/build.gradle.kts b/instrumentation/jdbc/library/build.gradle.kts index 03e0f372c10d..0661c51ae195 100644 --- a/instrumentation/jdbc/library/build.gradle.kts +++ b/instrumentation/jdbc/library/build.gradle.kts @@ -65,3 +65,10 @@ tasks { jvmArgs("-Dotel.instrumentation.jdbc.experimental.transaction.enabled=true") } } + +// todo remove when the next release is published +configurations.all { + resolutionStrategy { + force("io.opentelemetry:opentelemetry-api-incubator:1.53.0-alpha-SNAPSHOT") + } +} diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcInstrumenterFactory.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcInstrumenterFactory.java index ce9bd75a0bdc..6b4aed9dbe20 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcInstrumenterFactory.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcInstrumenterFactory.java @@ -5,9 +5,13 @@ package io.opentelemetry.instrumentation.jdbc.internal; +import static io.opentelemetry.api.incubator.config.DeclarativeConfigProperties.empty; import static java.util.Collections.emptyList; import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.incubator.ExtendedOpenTelemetry; +import io.opentelemetry.api.incubator.config.ConfigProvider; +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.instrumentation.api.incubator.semconv.code.CodeAttributesExtractor; import io.opentelemetry.instrumentation.api.incubator.semconv.code.CodeSpanNameExtractor; import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientMetrics; @@ -48,11 +52,30 @@ static Instrumenter createStatementInstrumenter( openTelemetry, emptyList(), true, - ConfigPropertiesUtil.getBoolean( - "otel.instrumentation.common.db-statement-sanitizer.enabled", true), + isStatementSanitizationEnabled(openTelemetry), captureQueryParameters); } + private static boolean isStatementSanitizationEnabled(OpenTelemetry openTelemetry) { + if (openTelemetry instanceof ExtendedOpenTelemetry) { + ConfigProvider configProvider = ((ExtendedOpenTelemetry) openTelemetry).getConfigProvider(); + // we might want to pull the config bridge to instrumentation-api-incubator which we can + // use here + DeclarativeConfigProperties properties = configProvider.getInstrumentationConfig(); + if (properties == null) { + properties = DeclarativeConfigProperties.empty(); + } + return properties + .getStructured("java", empty()) + .getStructured("common", empty()) + .getStructured("db_statement_sanitizer", empty()) + .getBoolean("enabled", true); + } + + return ConfigPropertiesUtil.getBoolean( + "otel.instrumentation.common.db-statement-sanitizer.enabled", true); + } + public static Instrumenter createStatementInstrumenter( OpenTelemetry openTelemetry, boolean enabled,