Skip to content

Commit 48922a7

Browse files
committed
Make auto scope propagation configurable
Signed-off-by: monosoul <[email protected]>
1 parent a0fb62f commit 48922a7

2 files changed

Lines changed: 18 additions & 3 deletions

File tree

dd-java-agent/instrumentation/kotlin-coroutines/src/main/java/datadog/trace/instrumentation/kotlin/coroutines/AbstractKotlinCoroutinesInstrumentation.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,14 @@ abstract class AbstractKotlinCoroutinesInstrumentation extends Instrumenter.Trac
99
"kotlinx.coroutines.CoroutineContextKt";
1010
protected static final String COROUTINE_CONTEXT_CLASS_NAME = "kotlin.coroutines.CoroutineContext";
1111

12+
private static final String INSTRUMENTATION_NAME = "kotlin_coroutine.experimental";
13+
1214
public AbstractKotlinCoroutinesInstrumentation() {
13-
super("kotlin_coroutine.experimental");
15+
super(INSTRUMENTATION_NAME);
16+
}
17+
18+
static String prefixedPropertyName(final String propertyName) {
19+
return "dd.integration." + INSTRUMENTATION_NAME + "." + propertyName;
1420
}
1521

1622
@Override
@@ -24,6 +30,7 @@ public String[] helperClassNames() {
2430
packageName + ".ScopeStateCoroutineContext",
2531
packageName + ".ScopeStateCoroutineContext$ContextElementKey",
2632
packageName + ".CoroutineContextHelper",
33+
packageName + ".AbstractKotlinCoroutinesInstrumentation",
2734
};
2835
}
2936
}

dd-java-agent/instrumentation/kotlin-coroutines/src/main/java/datadog/trace/instrumentation/kotlin/coroutines/ScopeStateCoroutineContext.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package datadog.trace.instrumentation.kotlin.coroutines;
22

3+
import static datadog.trace.instrumentation.kotlin.coroutines.AbstractKotlinCoroutinesInstrumentation.prefixedPropertyName;
34
import static datadog.trace.instrumentation.kotlin.coroutines.CoroutineContextHelper.getJob;
5+
import static java.lang.Boolean.getBoolean;
46

57
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
68
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
@@ -29,9 +31,15 @@ public ScopeStateCoroutineContext() {
2931
public void maybeInitialize() {
3032
if (!isInitialized) {
3133
final AgentScope activeScope = AgentTracer.get().activeScope();
34+
final boolean autoPropagationEnabled =
35+
getBoolean(prefixedPropertyName("auto_propagation.enabled"));
3236
if (activeScope != null) {
33-
activeScope.setAsyncPropagation(true);
34-
continuation = activeScope.captureConcurrent();
37+
if (autoPropagationEnabled) {
38+
activeScope.setAsyncPropagation(true);
39+
}
40+
if (activeScope.isAsyncPropagating()) {
41+
continuation = activeScope.captureConcurrent();
42+
}
3543
}
3644
isInitialized = true;
3745
}

0 commit comments

Comments
 (0)