Skip to content

Commit 673fcc5

Browse files
authored
Container hash tags propagation (#9282)
- Incorporate containerTagsHash (received from the Agent) in baseHash calculation - [DBM] Inject baseHash into SQL - [DSM] Use baseHash in DataStreamsTags
1 parent 91f4636 commit 673fcc5

File tree

21 files changed

+474
-544
lines changed

21 files changed

+474
-544
lines changed

communication/src/main/java/datadog/communication/ddagent/DDAgentFeaturesDiscovery.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import datadog.communication.monitor.DDAgentStatsDClientManager;
1616
import datadog.communication.monitor.Monitoring;
1717
import datadog.communication.monitor.Recording;
18+
import datadog.trace.api.BaseHash;
1819
import datadog.trace.api.telemetry.LogCollector;
1920
import datadog.trace.util.Strings;
2021
import java.nio.ByteBuffer;
@@ -228,7 +229,16 @@ private String probeTracesEndpoint(String[] endpoints) {
228229
}
229230

230231
private void processInfoResponseHeaders(Response response) {
231-
ContainerInfo.get().setContainerTagsHash(response.header(DATADOG_CONTAINER_TAGS_HASH));
232+
String newContainerTagsHash = response.header(DATADOG_CONTAINER_TAGS_HASH);
233+
if (newContainerTagsHash != null) {
234+
ContainerInfo containerInfo = ContainerInfo.get();
235+
synchronized (containerInfo) {
236+
if (!newContainerTagsHash.equals(containerInfo.getContainerTagsHash())) {
237+
containerInfo.setContainerTagsHash(newContainerTagsHash);
238+
BaseHash.recalcBaseHash(newContainerTagsHash);
239+
}
240+
}
241+
}
232242
}
233243

234244
@SuppressWarnings("unchecked")

dd-java-agent/instrumentation/jdbc/build.gradle

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,3 @@ tasks.named("latestDepJava11Test").configure {
8585
tasks.withType(Test).configureEach {
8686
usesService(testcontainersLimit)
8787
}
88-
89-
jmh {
90-
jmhVersion = libs.versions.jmh.get()
91-
duplicateClassesStrategy = DuplicatesStrategy.EXCLUDE
92-
}

dd-java-agent/instrumentation/jdbc/src/jmh/java/datadog/trace/instrumentation/jdbc/SQLCommenterBenchmark.java

Lines changed: 0 additions & 41 deletions
This file was deleted.

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

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -111,32 +111,26 @@ public static String onEnter(
111111
@Advice.This Connection connection,
112112
@Advice.Argument(value = 0, readOnly = false) String sql) {
113113
// Using INJECT_COMMENT fails to update when a test calls injectSysConfig
114-
if (DECORATE.shouldInjectSQLComment()) {
115-
final int callDepth = CallDepthThreadLocalMap.incrementCallDepth(Connection.class);
116-
if (callDepth > 0) {
117-
return null;
118-
}
119-
final String inputSql = sql;
120-
final DBInfo dbInfo =
121-
JDBCDecorator.parseDBInfo(
122-
connection, InstrumentationContext.get(Connection.class, DBInfo.class));
123-
String dbService = DECORATE.getDbService(dbInfo);
124-
if (dbService != null) {
125-
dbService =
126-
traceConfig(activeSpan()).getServiceMapping().getOrDefault(dbService, dbService);
127-
}
128-
if (dbInfo.getType().equals("sqlserver")) {
129-
sql =
130-
SQLCommenter.append(
131-
sql, dbService, dbInfo.getType(), dbInfo.getHost(), dbInfo.getDb());
132-
} else {
133-
sql =
134-
SQLCommenter.prepend(
135-
sql, dbService, dbInfo.getType(), dbInfo.getHost(), dbInfo.getDb());
136-
}
137-
return inputSql;
114+
if (!DECORATE.shouldInjectSQLComment()) {
115+
return sql;
138116
}
139-
return sql;
117+
if (CallDepthThreadLocalMap.incrementCallDepth(Connection.class) > 0) {
118+
return null;
119+
}
120+
final String inputSql = sql;
121+
final DBInfo dbInfo =
122+
JDBCDecorator.parseDBInfo(
123+
connection, InstrumentationContext.get(Connection.class, DBInfo.class));
124+
String dbService = DECORATE.getDbService(dbInfo);
125+
if (dbService != null) {
126+
dbService =
127+
traceConfig(activeSpan()).getServiceMapping().getOrDefault(dbService, dbService);
128+
}
129+
boolean append = "sqlserver".equals(dbInfo.getType());
130+
sql =
131+
SQLCommenter.inject(
132+
sql, dbService, dbInfo.getType(), dbInfo.getHost(), dbInfo.getDb(), null, append);
133+
return inputSql;
140134
}
141135

142136
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,14 @@ public class JDBCDecorator extends DatabaseClientDecorator<DBInfo> {
5151

5252
public static final String DD_INSTRUMENTATION_PREFIX = "_DD_";
5353

54-
public static final String DBM_PROPAGATION_MODE = Config.get().getDBMPropagationMode();
54+
public static final String DBM_PROPAGATION_MODE = Config.get().getDbmPropagationMode();
5555
public static final boolean INJECT_COMMENT =
5656
DBM_PROPAGATION_MODE.equals(DBM_PROPAGATION_MODE_FULL)
5757
|| DBM_PROPAGATION_MODE.equals(DBM_PROPAGATION_MODE_STATIC);
5858
private static final boolean INJECT_TRACE_CONTEXT =
5959
DBM_PROPAGATION_MODE.equals(DBM_PROPAGATION_MODE_FULL);
6060
public static final boolean DBM_TRACE_PREPARED_STATEMENTS =
61-
Config.get().isDBMTracePreparedStatements();
61+
Config.get().isDbmTracePreparedStatements();
6262

6363
private volatile boolean warnedAboutDBMPropagationMode = false; // to log a warning only once
6464

@@ -420,7 +420,7 @@ public boolean shouldInjectTraceContext(DBInfo dbInfo) {
420420
}
421421

422422
public boolean shouldInjectSQLComment() {
423-
return Config.get().getDBMPropagationMode().equals(DBM_PROPAGATION_MODE_FULL)
424-
|| Config.get().getDBMPropagationMode().equals(DBM_PROPAGATION_MODE_STATIC);
423+
return Config.get().getDbmPropagationMode().equals(DBM_PROPAGATION_MODE_FULL)
424+
|| Config.get().getDbmPropagationMode().equals(DBM_PROPAGATION_MODE_STATIC);
425425
}
426426
}

0 commit comments

Comments
 (0)