Skip to content

Commit e29146f

Browse files
committed
add config flags but in the wrong place
1 parent a6879bb commit e29146f

File tree

3 files changed

+36
-7
lines changed

3 files changed

+36
-7
lines changed

dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import datadog.trace.api.Config;
99
import datadog.trace.api.DDSpanId;
1010
import datadog.trace.api.DDTraceId;
11+
import datadog.trace.api.InstrumenterConfig;
1112
import datadog.trace.api.naming.SpanNaming;
1213
import datadog.trace.bootstrap.ContextStore;
1314
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
@@ -28,6 +29,7 @@
2829
import java.sql.SQLException;
2930
import java.sql.Statement;
3031
import java.util.HashSet;
32+
import java.util.Properties;
3133
import java.util.Set;
3234
import org.slf4j.Logger;
3335
import org.slf4j.LoggerFactory;
@@ -181,7 +183,7 @@ public static DBInfo parseDBInfo(
181183
} catch (Throwable ignore) {
182184
}
183185
if (dbInfo == null) {
184-
// couldn't find DBInfo anywhere, so fall back to default
186+
// couldn't find DBInfo from a previous call anywhere, so we try to fetch it from the DB
185187
dbInfo = parseDBInfoFromConnection(connection);
186188
}
187189
// store the DBInfo on the outermost connection instance to avoid future searches
@@ -200,7 +202,7 @@ public String getDbService(final DBInfo dbInfo) {
200202
}
201203

202204
public static DBInfo parseDBInfoFromConnection(final Connection connection) {
203-
if (connection == null) {
205+
if (connection == null || !InstrumenterConfig.get().isJdbcMetadataFetchingEnabled()) {
204206
// we can log here, but it risks to be too verbose
205207
return DBInfo.DEFAULT;
206208
}
@@ -209,12 +211,15 @@ public static DBInfo parseDBInfoFromConnection(final Connection connection) {
209211
final DatabaseMetaData metaData = connection.getMetaData();
210212
final String url = metaData.getURL();
211213
if (url != null) {
212-
try {
213-
dbInfo = JDBCConnectionUrlParser.extractDBInfo(url, connection.getClientInfo());
214-
} catch (final Throwable ex) {
215-
// getClientInfo is likely not allowed.
216-
dbInfo = JDBCConnectionUrlParser.extractDBInfo(url, null);
214+
Properties clientInfo = null;
215+
if (InstrumenterConfig.get().isJdbcClientInfoFetchingEnabled()) {
216+
try {
217+
clientInfo = connection.getClientInfo();
218+
} catch (final Throwable ex) {
219+
// getClientInfo is likely not allowed, we can still extract info from the url alone
220+
}
217221
}
222+
dbInfo = JDBCConnectionUrlParser.extractDBInfo(url, clientInfo);
218223
} else {
219224
dbInfo = DBInfo.DEFAULT;
220225
}

dd-trace-api/src/main/java/datadog/trace/api/config/TraceInstrumentationConfig.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ public final class TraceInstrumentationConfig {
7575
public static final String JDBC_POOL_WAITING_ENABLED =
7676
"trace.experimental.jdbc.pool.waiting.enabled";
7777

78+
public static final String JDBC_METADATA_FETCHING_ENABLED =
79+
"trace.jdbc.metadata.fetching.enabled";
80+
public static final String JDBC_CLIENT_INFO_FETCHING_ENABLED =
81+
"trace.jdbc.client.info.fetching.enabled";
82+
7883
public static final String AKKA_FORK_JOIN_TASK_NAME = "trace.akka.fork.join.task.name";
7984
public static final String AKKA_FORK_JOIN_EXECUTOR_TASK_NAME =
8085
"trace.akka.fork.join.executor.task.name";

internal-api/src/main/java/datadog/trace/api/InstrumenterConfig.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@
4444
import static datadog.trace.api.config.TraceInstrumentationConfig.INSTRUMENTATION_CONFIG_ID;
4545
import static datadog.trace.api.config.TraceInstrumentationConfig.INTEGRATIONS_ENABLED;
4646
import static datadog.trace.api.config.TraceInstrumentationConfig.JAX_RS_ADDITIONAL_ANNOTATIONS;
47+
import static datadog.trace.api.config.TraceInstrumentationConfig.JDBC_CLIENT_INFO_FETCHING_ENABLED;
4748
import static datadog.trace.api.config.TraceInstrumentationConfig.JDBC_CONNECTION_CLASS_NAME;
49+
import static datadog.trace.api.config.TraceInstrumentationConfig.JDBC_METADATA_FETCHING_ENABLED;
4850
import static datadog.trace.api.config.TraceInstrumentationConfig.JDBC_POOL_WAITING_ENABLED;
4951
import static datadog.trace.api.config.TraceInstrumentationConfig.JDBC_PREPARED_STATEMENT_CLASS_NAME;
5052
import static datadog.trace.api.config.TraceInstrumentationConfig.MEASURE_METHODS;
@@ -132,6 +134,8 @@ public class InstrumenterConfig {
132134
private final String jdbcPreparedStatementClassName;
133135
private final String jdbcConnectionClassName;
134136
private final boolean jdbcPoolWaitingEnabled;
137+
private final boolean jdbcMetadataFetchingEnabled;
138+
private final boolean jdbcClientInfoFetchingEnabled;
135139

136140
private final String httpURLConnectionClassName;
137141
private final String axisTransportClassName;
@@ -245,6 +249,9 @@ private InstrumenterConfig() {
245249
configProvider.getString(JDBC_PREPARED_STATEMENT_CLASS_NAME, "");
246250
jdbcConnectionClassName = configProvider.getString(JDBC_CONNECTION_CLASS_NAME, "");
247251
jdbcPoolWaitingEnabled = configProvider.getBoolean(JDBC_POOL_WAITING_ENABLED, false);
252+
jdbcMetadataFetchingEnabled = configProvider.getBoolean(JDBC_METADATA_FETCHING_ENABLED, true);
253+
jdbcClientInfoFetchingEnabled =
254+
configProvider.getBoolean(JDBC_CLIENT_INFO_FETCHING_ENABLED, true);
248255

249256
httpURLConnectionClassName = configProvider.getString(HTTP_URL_CONNECTION_CLASS_NAME, "");
250257
axisTransportClassName = configProvider.getString(AXIS_TRANSPORT_CLASS_NAME, "");
@@ -425,6 +432,14 @@ public boolean isJdbcPoolWaitingEnabled() {
425432
return jdbcPoolWaitingEnabled;
426433
}
427434

435+
public boolean isJdbcMetadataFetchingEnabled() {
436+
return jdbcMetadataFetchingEnabled;
437+
}
438+
439+
public boolean isJdbcClientInfoFetchingEnabled() {
440+
return jdbcClientInfoFetchingEnabled;
441+
}
442+
428443
public String getHttpURLConnectionClassName() {
429444
return httpURLConnectionClassName;
430445
}
@@ -636,6 +651,10 @@ public String toString() {
636651
+ '\''
637652
+ ", jdbcPoolWaitingEnabled="
638653
+ jdbcPoolWaitingEnabled
654+
+ ", jdbcMetadataFetchingEnabled="
655+
+ jdbcMetadataFetchingEnabled
656+
+ ", jdbcClientInfoFetchingEnabled="
657+
+ jdbcClientInfoFetchingEnabled
639658
+ ", httpURLConnectionClassName='"
640659
+ httpURLConnectionClassName
641660
+ '\''

0 commit comments

Comments
 (0)