Skip to content

Commit 30f8054

Browse files
committed
Rename statement_sanitizer to query_sanitization
1 parent 38ee182 commit 30f8054

29 files changed

Lines changed: 219 additions & 127 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
and deprecated config key `otel.instrumentation.graphql.add-operation-name-to-span-name.enabled`
99
in favor of `setQuerySanitizationEnabled()`, `setOperationNameInSpanNameEnabled()`, and
1010
`otel.instrumentation.graphql.operation-name-in-span-name.enabled`
11+
- Deprecated the declarative config name `statement_sanitizer` in favor of `query_sanitization`
12+
- Deprecated the declarative config group `common.database` in favor of `common.db`
1113

1214
## Version 2.26.1 (2026-03-23)
1315

declarative-config-bridge/src/main/java/io/opentelemetry/instrumentation/config/bridge/ConfigPropertiesBackedDeclarativeConfigProperties.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ public final class ConfigPropertiesBackedDeclarativeConfigProperties
6464
"java.common.http.server.emit_experimental_telemetry/development",
6565
"otel.instrumentation.http.server.emit-experimental-telemetry");
6666
SPECIAL_MAPPINGS.put(
67-
"java.common.database.statement_sanitizer.enabled",
67+
"java.common.db.query_sanitization.enabled",
6868
"otel.instrumentation.common.db-statement-sanitizer.enabled");
6969
SPECIAL_MAPPINGS.put(
70-
"java.common.database.sqlcommenter/development.enabled",
70+
"java.common.db.sqlcommenter/development.enabled",
7171
"otel.instrumentation.common.experimental.db-sqlcommenter.enabled");
7272
SPECIAL_MAPPINGS.put(
7373
"java.common.messaging.receive_telemetry/development.enabled",

declarative-config-bridge/src/test/java/io/opentelemetry/instrumentation/config/bridge/ConfigPropertiesBackedDeclarativeConfigPropertiesTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,21 @@ void testGeneralHttpListMapping() {
9999
.containsExactly("header1", "header2");
100100
}
101101

102+
@Test
103+
void testQuerySanitizationMapping() {
104+
DeclarativeConfigProperties config =
105+
createConfig("otel.instrumentation.common.db-statement-sanitizer.enabled", "false");
106+
107+
assertThat(
108+
config
109+
.getStructured("java")
110+
.getStructured("common")
111+
.getStructured("db")
112+
.getStructured("query_sanitization")
113+
.getBoolean("enabled"))
114+
.isFalse();
115+
}
116+
102117
@Test
103118
void testJavaCommonServicePeerMapping() {
104119
DeclarativeConfigProperties config =

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/config/internal/CommonConfig.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ public final class CommonConfig {
3131
private final List<String> serverResponseHeaders;
3232
private final Set<String> knownHttpRequestMethods;
3333
private final EnduserConfig enduserConfig;
34-
private final boolean querySanitizationEnabled;
35-
private final boolean sqlCommenterEnabled;
3634
private final boolean emitExperimentalHttpClientTelemetry;
3735
private final boolean emitExperimentalHttpServerTelemetry;
3836
private final Set<String> sensitiveQueryParameters;
@@ -73,10 +71,6 @@ public CommonConfig(OpenTelemetry openTelemetry) {
7371
.get("http")
7472
.getScalarList(
7573
"known_methods", String.class, new ArrayList<>(HttpConstants.KNOWN_METHODS)));
76-
querySanitizationEnabled =
77-
commonConfig.get("database").get("statement_sanitizer").getBoolean("enabled", true);
78-
sqlCommenterEnabled =
79-
commonConfig.get("database").get("sqlcommenter/development").getBoolean("enabled", false);
8074
emitExperimentalHttpClientTelemetry =
8175
commonConfig
8276
.get("http")
@@ -143,14 +137,6 @@ public EnduserConfig getEnduserConfig() {
143137
return enduserConfig;
144138
}
145139

146-
public boolean isQuerySanitizationEnabled() {
147-
return querySanitizationEnabled;
148-
}
149-
150-
public boolean isSqlCommenterEnabled() {
151-
return sqlCommenterEnabled;
152-
}
153-
154140
public boolean shouldEmitExperimentalHttpClientTelemetry() {
155141
return emitExperimentalHttpClientTelemetry;
156142
}
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.api.incubator.config.internal;
7+
8+
import io.opentelemetry.api.OpenTelemetry;
9+
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
10+
import java.util.function.Function;
11+
import java.util.logging.Logger;
12+
import javax.annotation.Nullable;
13+
14+
/**
15+
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
16+
* any time.
17+
*/
18+
public final class DbConfig {
19+
private static final Logger logger = Logger.getLogger(DbConfig.class.getName());
20+
21+
public static boolean isCommonQuerySanitizationEnabled(OpenTelemetry openTelemetry) {
22+
return isCommonQuerySanitizationEnabled(openTelemetry, true);
23+
}
24+
25+
public static boolean isCommonQuerySanitizationEnabled(
26+
OpenTelemetry openTelemetry, boolean defaultValue) {
27+
Boolean querySanitizationEnabled =
28+
getCommonDbValue(openTelemetry, DbConfig::getQuerySanitizationEnabled);
29+
return querySanitizationEnabled != null ? querySanitizationEnabled : defaultValue;
30+
}
31+
32+
public static boolean isQuerySanitizationEnabled(
33+
OpenTelemetry openTelemetry, String instrumentationName) {
34+
Boolean querySanitizationEnabled =
35+
getQuerySanitizationEnabled(
36+
DeclarativeConfigUtil.getInstrumentationConfig(openTelemetry, instrumentationName));
37+
if (querySanitizationEnabled != null) {
38+
return querySanitizationEnabled;
39+
}
40+
return isCommonQuerySanitizationEnabled(openTelemetry);
41+
}
42+
43+
public static boolean isCommonSqlCommenterEnabled(
44+
OpenTelemetry openTelemetry, boolean defaultValue) {
45+
Boolean sqlCommenterEnabled = getCommonSqlCommenterEnabled(openTelemetry);
46+
return sqlCommenterEnabled != null ? sqlCommenterEnabled : defaultValue;
47+
}
48+
49+
public static boolean isSqlCommenterEnabled(
50+
OpenTelemetry openTelemetry, String instrumentationName) {
51+
return isSqlCommenterEnabled(openTelemetry, instrumentationName, false);
52+
}
53+
54+
public static boolean isSqlCommenterEnabled(
55+
OpenTelemetry openTelemetry, String instrumentationName, boolean defaultValue) {
56+
Boolean sqlCommenterEnabled =
57+
getSqlCommenterEnabled(
58+
DeclarativeConfigUtil.getInstrumentationConfig(openTelemetry, instrumentationName));
59+
if (sqlCommenterEnabled != null) {
60+
return sqlCommenterEnabled;
61+
}
62+
return isCommonSqlCommenterEnabled(openTelemetry, defaultValue);
63+
}
64+
65+
@Nullable
66+
private static Boolean getCommonSqlCommenterEnabled(OpenTelemetry openTelemetry) {
67+
return getCommonDbValue(openTelemetry, DbConfig::getSqlCommenterEnabled);
68+
}
69+
70+
@Nullable
71+
private static Boolean getCommonDbValue(
72+
OpenTelemetry openTelemetry, Function<DeclarativeConfigProperties, Boolean> configReader) {
73+
DeclarativeConfigProperties commonConfig =
74+
DeclarativeConfigUtil.getInstrumentationConfig(openTelemetry, "common");
75+
76+
Boolean value = configReader.apply(commonConfig.get("db"));
77+
if (value != null) {
78+
return value;
79+
}
80+
81+
Boolean deprecatedValue = configReader.apply(commonConfig.get("database"));
82+
if (deprecatedValue != null) {
83+
logger.warning(
84+
"common.database is deprecated in declarative configuration"
85+
+ " and has been replaced by common.db.");
86+
return deprecatedValue;
87+
}
88+
89+
return null;
90+
}
91+
92+
@Nullable
93+
private static Boolean getQuerySanitizationEnabled(DeclarativeConfigProperties config) {
94+
Boolean value = config.get("query_sanitization").getBoolean("enabled");
95+
if (value != null) {
96+
return value;
97+
}
98+
99+
Boolean deprecatedValue = config.get("statement_sanitizer").getBoolean("enabled");
100+
if (deprecatedValue != null) {
101+
logger.warning(
102+
"statement_sanitizer is deprecated in declarative configuration"
103+
+ " and has been replaced by query_sanitization.");
104+
return deprecatedValue;
105+
}
106+
107+
return null;
108+
}
109+
110+
@Nullable
111+
private static Boolean getSqlCommenterEnabled(DeclarativeConfigProperties config) {
112+
return config.get("sqlcommenter/development").getBoolean("enabled");
113+
}
114+
115+
private DbConfig() {}
116+
}

instrumentation/camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/DbSpanDecorator.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@
3434
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT;
3535
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM;
3636

37+
import io.opentelemetry.api.GlobalOpenTelemetry;
3738
import io.opentelemetry.api.common.AttributesBuilder;
39+
import io.opentelemetry.instrumentation.api.incubator.config.internal.DbConfig;
3840
import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlQuery;
3941
import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlQueryAnalyzer;
40-
import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig;
4142
import io.opentelemetry.javaagent.instrumentation.apachecamel.CamelDirection;
4243
import java.net.URI;
4344
import java.util.Map;
@@ -48,7 +49,8 @@
4849
class DbSpanDecorator extends BaseSpanDecorator {
4950

5051
private static final SqlQueryAnalyzer analyzer =
51-
SqlQueryAnalyzer.create(AgentCommonConfig.get().isQuerySanitizationEnabled());
52+
SqlQueryAnalyzer.create(
53+
DbConfig.isQuerySanitizationEnabled(GlobalOpenTelemetry.get(), "camel"));
5254

5355
private final String component;
5456
private final String system;

instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/CassandraSingletons.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99

1010
import com.datastax.driver.core.ExecutionInfo;
1111
import io.opentelemetry.api.GlobalOpenTelemetry;
12+
import io.opentelemetry.instrumentation.api.incubator.config.internal.DbConfig;
1213
import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientMetrics;
1314
import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientSpanNameExtractor;
1415
import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlClientAttributesExtractor;
1516
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
1617
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
17-
import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig;
1818

1919
@SuppressWarnings("deprecation") // using deprecated semconv
2020
public final class CassandraSingletons {
@@ -36,7 +36,7 @@ public final class CassandraSingletons {
3636
SqlClientAttributesExtractor.builder(attributesGetter)
3737
.setTableAttribute(DB_CASSANDRA_TABLE)
3838
.setQuerySanitizationEnabled(
39-
AgentCommonConfig.get().isQuerySanitizationEnabled())
39+
DbConfig.isQuerySanitizationEnabled(GlobalOpenTelemetry.get(), "cassandra"))
4040
.build())
4141
.addAttributesExtractor(new CassandraAttributesExtractor())
4242
.addOperationMetrics(DbClientMetrics.get())

instrumentation/cassandra/cassandra-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/CassandraSingletons.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99

1010
import com.datastax.oss.driver.api.core.cql.ExecutionInfo;
1111
import io.opentelemetry.api.GlobalOpenTelemetry;
12+
import io.opentelemetry.instrumentation.api.incubator.config.internal.DbConfig;
1213
import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientMetrics;
1314
import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientSpanNameExtractor;
1415
import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlClientAttributesExtractor;
1516
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
1617
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
17-
import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig;
1818

1919
@SuppressWarnings("deprecation") // using deprecated semconv
2020
public final class CassandraSingletons {
@@ -35,7 +35,7 @@ public final class CassandraSingletons {
3535
SqlClientAttributesExtractor.builder(attributesGetter)
3636
.setTableAttribute(DB_CASSANDRA_TABLE)
3737
.setQuerySanitizationEnabled(
38-
AgentCommonConfig.get().isQuerySanitizationEnabled())
38+
DbConfig.isQuerySanitizationEnabled(GlobalOpenTelemetry.get(), "cassandra"))
3939
.build())
4040
.addAttributesExtractor(new CassandraAttributesExtractor())
4141
.addOperationMetrics(DbClientMetrics.get())

instrumentation/cassandra/cassandra-4.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_4/CassandraSingletons.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66
package io.opentelemetry.javaagent.instrumentation.cassandra.v4_4;
77

88
import io.opentelemetry.api.GlobalOpenTelemetry;
9+
import io.opentelemetry.instrumentation.api.incubator.config.internal.DbConfig;
910
import io.opentelemetry.instrumentation.cassandra.v4_4.CassandraTelemetry;
10-
import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig;
1111

1212
final class CassandraSingletons {
1313

1414
static final CassandraTelemetry telemetry =
1515
CassandraTelemetry.builder(GlobalOpenTelemetry.get())
16-
.setQuerySanitizationEnabled(AgentCommonConfig.get().isQuerySanitizationEnabled())
16+
.setQuerySanitizationEnabled(
17+
DbConfig.isQuerySanitizationEnabled(GlobalOpenTelemetry.get(), "cassandra"))
1718
.build();
1819

1920
private CassandraSingletons() {}

instrumentation/couchbase/couchbase-2-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseQuerySanitizer.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77

88
import static io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlDialect.DOUBLE_QUOTES_ARE_STRING_LITERALS;
99

10+
import io.opentelemetry.api.GlobalOpenTelemetry;
11+
import io.opentelemetry.instrumentation.api.incubator.config.internal.DbConfig;
1012
import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlQuery;
1113
import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlQueryAnalyzer;
12-
import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig;
1314
import java.lang.invoke.MethodHandle;
1415
import java.lang.invoke.MethodHandles;
1516
import java.lang.invoke.MethodType;
@@ -18,7 +19,8 @@
1819
public final class CouchbaseQuerySanitizer {
1920

2021
private static final SqlQueryAnalyzer analyzer =
21-
SqlQueryAnalyzer.create(AgentCommonConfig.get().isQuerySanitizationEnabled());
22+
SqlQueryAnalyzer.create(
23+
DbConfig.isQuerySanitizationEnabled(GlobalOpenTelemetry.get(), "couchbase"));
2224

2325
@Nullable private static final Class<?> QUERY_CLASS;
2426
@Nullable private static final Class<?> STATEMENT_CLASS;

0 commit comments

Comments
 (0)