diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryBuilder.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryBuilder.java index f1b7006d4b1f..c466d1f02a24 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryBuilder.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryBuilder.java @@ -18,7 +18,7 @@ public final class JdbcTelemetryBuilder { private final OpenTelemetry openTelemetry; - private boolean dataSourceInstrumenterEnabled = true; + private boolean dataSourceInstrumenterEnabled = false; private boolean statementInstrumenterEnabled = true; private boolean statementSanitizationEnabled = true; private boolean transactionInstrumenterEnabled = false; @@ -34,7 +34,7 @@ public final class JdbcTelemetryBuilder { this.openTelemetry = openTelemetry; } - /** Configures whether spans are created for JDBC Connections. Enabled by default. */ + /** Configures whether spans are created for JDBC Connections. Disabled by default. */ @CanIgnoreReturnValue public JdbcTelemetryBuilder setDataSourceInstrumenterEnabled(boolean enabled) { this.dataSourceInstrumenterEnabled = enabled; diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java index 752f8028a9b1..48aa7eb62fce 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java @@ -60,7 +60,6 @@ void buildWithDefaults() throws SQLException { trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("parent"), - span -> span.hasName("TestDataSource.getConnection"), span -> span.hasName("SELECT dbname") .hasAttribute(equalTo(maybeStable(DB_STATEMENT), "SELECT ?;")))); @@ -99,7 +98,6 @@ void error() throws SQLException { trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("parent"), - span -> span.hasName("TestDataSource.getConnection"), span -> span.hasName("SELECT dbname") .hasAttributesSatisfyingExactly( @@ -164,6 +162,7 @@ void buildWithDataSourceInstrumenterDisabled() throws SQLException { void buildWithStatementInstrumenterDisabled() throws SQLException { JdbcTelemetry telemetry = JdbcTelemetry.builder(testing.getOpenTelemetry()) + .setDataSourceInstrumenterEnabled(true) .setStatementInstrumenterEnabled(false) .build(); @@ -180,10 +179,10 @@ void buildWithStatementInstrumenterDisabled() throws SQLException { } @Test - void buildWithTransactionInstrumenterDisabled() throws SQLException { + void buildWithTransactionInstrumenterEnabled() throws SQLException { JdbcTelemetry telemetry = JdbcTelemetry.builder(testing.getOpenTelemetry()) - .setTransactionInstrumenterEnabled(false) + .setTransactionInstrumenterEnabled(true) .build(); DataSource dataSource = telemetry.wrap(new TestDataSource()); @@ -200,7 +199,8 @@ void buildWithTransactionInstrumenterDisabled() throws SQLException { trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("parent"), - span -> span.hasName("TestDataSource.getConnection"))); + span -> span.hasName("COMMIT"), + span -> span.hasName("ROLLBACK"))); } @Test @@ -219,7 +219,6 @@ void buildWithSanitizationDisabled() throws SQLException { trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("parent"), - span -> span.hasName("TestDataSource.getConnection"), span -> span.hasName("SELECT dbname") .hasAttribute(equalTo(maybeStable(DB_STATEMENT), "SELECT 1;")))); @@ -258,7 +257,6 @@ void batchStatement() throws SQLException { trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("parent"), - span -> span.hasName("TestDataSource.getConnection"), span -> span.hasName( SemconvStability.emitStableDatabaseSemconv() diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/OpenTelemetryDataSourceTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/OpenTelemetryDataSourceTest.java index eaf778c6da68..e951e33c7161 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/OpenTelemetryDataSourceTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/OpenTelemetryDataSourceTest.java @@ -41,7 +41,10 @@ class OpenTelemetryDataSourceTest { @ParameterizedTest @MethodSource("getConnectionMethodsArguments") void shouldEmitGetConnectionSpans(GetConnectionFunction getConnection) throws SQLException { - JdbcTelemetry telemetry = JdbcTelemetry.create(testing.getOpenTelemetry()); + JdbcTelemetry telemetry = + JdbcTelemetry.builder(testing.getOpenTelemetry()) + .setDataSourceInstrumenterEnabled(true) + .build(); DataSource dataSource = telemetry.wrap(new TestDataSource()); Connection connection = testing.runWithSpan("parent", () -> getConnection.call(dataSource)); diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/jdbc/DataSourcePostProcessor.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/jdbc/DataSourcePostProcessor.java index ad11fa09c991..cd8d7ca3d38b 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/jdbc/DataSourcePostProcessor.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/jdbc/DataSourcePostProcessor.java @@ -74,7 +74,12 @@ public Object postProcessAfterInitialization(Object bean, String beanName) { configPropertiesProvider .getObject() .getBoolean( - "otel.instrumentation.jdbc.experimental.transaction.enabled", false)); + "otel.instrumentation.jdbc.experimental.transaction.enabled", false)) + .setDataSourceInstrumenterEnabled( + configPropertiesProvider + .getObject() + .getBoolean( + "otel.instrumentation.jdbc.experimental.datasource.enabled", false)); Experimental.setEnableSqlCommenter( builder, configPropertiesProvider diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/instrumentation/spring/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 01796c62b060..a0365fa167a0 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -369,6 +369,12 @@ "description": "Enables experimental instrumentation to create spans for COMMIT and ROLLBACK operations.", "defaultValue": false }, + { + "name": "otel.instrumentation.jdbc.experimental.datasource.enabled", + "type": "java.lang.Boolean", + "description": "Enables experimental instrumentation to create spans for DataSource.getConnection calls.", + "defaultValue": false + }, { "name": "otel.instrumentation.jdbc.experimental.sqlcommenter.enabled", "type": "java.lang.Boolean", diff --git a/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractOtelSpringStarterSmokeTest.java b/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractOtelSpringStarterSmokeTest.java index c35322169344..fa1957dd6b56 100644 --- a/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractOtelSpringStarterSmokeTest.java +++ b/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractOtelSpringStarterSmokeTest.java @@ -288,7 +288,6 @@ void databaseQuery() { traceAssert -> traceAssert.hasSpansSatisfyingExactly( span -> span.hasName("server"), - span -> span.satisfies(s -> assertThat(s.getName()).endsWith(".getConnection")), span -> span.hasKind(SpanKind.CLIENT) .hasAttribute(