Skip to content

Commit 052352c

Browse files
add flag to toggle JMS dash replacement behaviour
1 parent 126e641 commit 052352c

File tree

4 files changed

+20
-1
lines changed

4 files changed

+20
-1
lines changed

dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MessageExtractAdapter.java

+7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datadog.trace.instrumentation.jms;
22

3+
import datadog.trace.api.Config;
34
import datadog.trace.api.Function;
45
import datadog.trace.api.cache.DDCache;
56
import datadog.trace.api.cache.DDCaches;
@@ -12,10 +13,16 @@
1213
@Slf4j
1314
public class MessageExtractAdapter implements AgentPropagation.ContextVisitor<Message> {
1415

16+
private static final boolean USE_LEGACY_DASH_REPLACEMENT =
17+
Config.get().isJmsLegacyDashReplacement();
18+
1519
private static final Function<String, String> KEY_MAPPER =
1620
new Function<String, String>() {
1721
@Override
1822
public String apply(String key) {
23+
if (USE_LEGACY_DASH_REPLACEMENT) {
24+
return key.replace("__dash__", "-").toLowerCase();
25+
}
1926
return key.replace('$', '-').toLowerCase();
2027
}
2128
};

dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MessageInjectAdapter.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datadog.trace.instrumentation.jms;
22

3+
import datadog.trace.api.Config;
34
import datadog.trace.bootstrap.instrumentation.api.AgentPropagation;
45
import javax.jms.JMSException;
56
import javax.jms.Message;
@@ -8,11 +9,15 @@
89
@Slf4j
910
public class MessageInjectAdapter implements AgentPropagation.Setter<Message> {
1011

12+
private static final boolean USE_LEGACY_DASH_REPLACEMENT =
13+
Config.get().isJmsLegacyDashReplacement();
14+
1115
public static final MessageInjectAdapter SETTER = new MessageInjectAdapter();
1216

1317
@Override
1418
public void set(final Message carrier, final String key, final String value) {
15-
final String propName = key.replace('-', '$');
19+
final String propName =
20+
USE_LEGACY_DASH_REPLACEMENT ? key.replace("-", "__dash__") : key.replace('-', '$');
1621
try {
1722
carrier.setStringProperty(propName, value);
1823
} catch (final JMSException e) {

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

+2
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,7 @@ public final class TracerConfig {
5151

5252
public static final String ENABLE_TRACE_AGENT_V05 = "trace.agent.v0.5.enabled";
5353

54+
public static final String JMS_LEGACY_DASH_REPLACEMENT = "trace.jms.legacy.dash.replacement";
55+
5456
private TracerConfig() {}
5557
}

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

+5
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@
144144
import static datadog.trace.api.config.TracerConfig.HTTP_CLIENT_ERROR_STATUSES;
145145
import static datadog.trace.api.config.TracerConfig.HTTP_SERVER_ERROR_STATUSES;
146146
import static datadog.trace.api.config.TracerConfig.ID_GENERATION_STRATEGY;
147+
import static datadog.trace.api.config.TracerConfig.JMS_LEGACY_DASH_REPLACEMENT;
147148
import static datadog.trace.api.config.TracerConfig.PARTIAL_FLUSH_MIN_SPANS;
148149
import static datadog.trace.api.config.TracerConfig.PRIORITY_SAMPLING;
149150
import static datadog.trace.api.config.TracerConfig.PRIORITY_SAMPLING_FORCE;
@@ -372,6 +373,8 @@ private String profilingProxyPasswordMasker() {
372373

373374
@Getter private final boolean internalExitOnFailure;
374375

376+
@Getter private final boolean jmsLegacyDashReplacement;
377+
375378
@Getter private final boolean resolverUseLoadClassEnabled;
376379

377380
@Getter private final String jdbcPreparedStatementClassName;
@@ -630,6 +633,8 @@ && isJavaVersionAtLeast(8)
630633
traceAnalyticsEnabled =
631634
configProvider.getBoolean(TRACE_ANALYTICS_ENABLED, DEFAULT_TRACE_ANALYTICS_ENABLED);
632635

636+
jmsLegacyDashReplacement = configProvider.getBoolean(JMS_LEGACY_DASH_REPLACEMENT, false);
637+
633638
traceSamplingServiceRules = configProvider.getMergedMap(TRACE_SAMPLING_SERVICE_RULES);
634639
traceSamplingOperationRules = configProvider.getMergedMap(TRACE_SAMPLING_OPERATION_RULES);
635640
traceSampleRate = configProvider.getDouble(TRACE_SAMPLE_RATE);

0 commit comments

Comments
 (0)