Skip to content

Commit e10da91

Browse files
authored
Add proper context propagation for reactive streams (#7644)
* Add proper context propagation for reactive streams * fix muzzle * Fix lettuce test and add testcontainer * Add reactivestream as spring 6 test dep * Use right api for instrumentation matching * Add reactivestream as test dependency * Simplify webflux instrumentation and fix tests * Fix webflux tests and publisher propagation * Simplify lettuce-5 reactive * spotless * finalize * fix test * capturing peek is wrong * simplify the propagation logic * Restore lettuce advices * Support optimizable operators * Fix propagations * don't propagate onSubscribe * limit to reactor 3.1 * Let active propagate downstream * simplify span activations * Exclude scope propagation on reactor event loops
1 parent b69d348 commit e10da91

File tree

67 files changed

+1890
-752
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+1890
-752
lines changed

dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/AsyncResultDecorator.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,10 @@ public static void registerExtension(AsyncResultSupportExtension extension) {
5151
* @return An asynchronous result that will finish the span if the result is asynchronous, the
5252
* original result otherwise.
5353
*/
54-
public Object wrapAsyncResultOrFinishSpan(final Object result, final AgentSpan span) {
54+
public Object wrapAsyncResultOrFinishSpan(
55+
final Object result, final Class<?> methodReturnType, final AgentSpan span) {
5556
AsyncResultSupportExtension extension;
56-
if (result != null && (extension = EXTENSION_CLASS_VALUE.get(result.getClass())) != null) {
57+
if (result != null && (extension = EXTENSION_CLASS_VALUE.get(methodReturnType)) != null) {
5758
Object applied = extension.apply(result, span);
5859
if (applied != null) {
5960
return applied;

dd-java-agent/instrumentation/couchbase/couchbase-3.1/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ dependencies {
2020
testImplementation group: 'com.couchbase.client', name: 'java-client', version: '3.1.0'
2121
testImplementation group: 'org.testcontainers', name: 'couchbase', version: libs.versions.testcontainers.get()
2222
testImplementation project(':dd-java-agent:instrumentation:reactor-core-3.1')
23+
testImplementation project(':dd-java-agent:instrumentation:reactive-streams')
2324

2425
latestDepTestImplementation group: 'com.couchbase.client', name: 'java-client', version: '3.1.+'
2526
}

dd-java-agent/instrumentation/couchbase/couchbase-3.1/gradle.lockfile

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ org.apache.httpcomponents.core5:httpcore5-h2:5.1.3=spotbugs
8585
org.apache.httpcomponents.core5:httpcore5:5.1.3=spotbugs
8686
org.apache.logging.log4j:log4j-api:2.19.0=spotbugs
8787
org.apache.logging.log4j:log4j-core:2.19.0=spotbugs
88-
org.apiguardian:apiguardian-api:1.1.2=latestDepTestCompileClasspath,testCompileClasspath
88+
org.apiguardian:apiguardian-api:1.1.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
8989
org.checkerframework:checker-qual:2.5.2=annotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor
9090
org.codehaus.groovy:groovy-all:3.0.17=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
9191
org.codehaus.groovy:groovy-ant:2.5.14=codenarc
@@ -130,14 +130,16 @@ org.jctools:jctools-core:3.3.0=instrumentPluginClasspath,latestDepTestRuntimeCla
130130
org.jetbrains:annotations:17.0.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
131131
org.junit.jupiter:junit-jupiter-api:5.9.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
132132
org.junit.jupiter:junit-jupiter-engine:5.9.2=latestDepTestRuntimeClasspath,testRuntimeClasspath
133-
org.junit.platform:junit-platform-commons:1.9.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
134-
org.junit.platform:junit-platform-engine:1.9.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
133+
org.junit.platform:junit-platform-commons:1.9.0=latestDepTestCompileClasspath,testCompileClasspath
134+
org.junit.platform:junit-platform-commons:1.9.2=latestDepTestRuntimeClasspath,testRuntimeClasspath
135+
org.junit.platform:junit-platform-engine:1.9.0=latestDepTestCompileClasspath,testCompileClasspath
136+
org.junit.platform:junit-platform-engine:1.9.2=latestDepTestRuntimeClasspath,testRuntimeClasspath
135137
org.junit.platform:junit-platform-launcher:1.9.2=latestDepTestRuntimeClasspath,testRuntimeClasspath
136-
org.junit.platform:junit-platform-runner:1.9.2=latestDepTestRuntimeClasspath,testRuntimeClasspath
137-
org.junit.platform:junit-platform-suite-api:1.9.2=latestDepTestRuntimeClasspath,testRuntimeClasspath
138-
org.junit.platform:junit-platform-suite-commons:1.9.2=latestDepTestRuntimeClasspath,testRuntimeClasspath
138+
org.junit.platform:junit-platform-runner:1.9.0=latestDepTestRuntimeClasspath,testRuntimeClasspath
139+
org.junit.platform:junit-platform-suite-api:1.9.0=latestDepTestRuntimeClasspath,testRuntimeClasspath
140+
org.junit.platform:junit-platform-suite-commons:1.9.0=latestDepTestRuntimeClasspath,testRuntimeClasspath
141+
org.junit:junit-bom:5.9.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
139142
org.junit:junit-bom:5.9.1=spotbugs
140-
org.junit:junit-bom:5.9.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
141143
org.objenesis:objenesis:3.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
142144
org.opentest4j:opentest4j:1.2.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
143145
org.ow2.asm:asm-analysis:9.2=instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath

dd-java-agent/instrumentation/couchbase/couchbase-3.2/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ dependencies {
1919

2020
testImplementation group: 'com.couchbase.client', name: 'java-client', version: '3.2.0'
2121
testImplementation group: 'org.testcontainers', name: 'couchbase', version: libs.versions.testcontainers.get()
22+
testImplementation project(':dd-java-agent:instrumentation:reactive-streams')
2223
testImplementation project(':dd-java-agent:instrumentation:reactor-core-3.1')
2324

2425
latestDepTestImplementation group: 'com.couchbase.client', name: 'java-client', version: '+'

dd-java-agent/instrumentation/couchbase/couchbase-3.2/gradle.lockfile

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ org.apache.httpcomponents.core5:httpcore5-h2:5.1.3=spotbugs
8585
org.apache.httpcomponents.core5:httpcore5:5.1.3=spotbugs
8686
org.apache.logging.log4j:log4j-api:2.19.0=spotbugs
8787
org.apache.logging.log4j:log4j-core:2.19.0=spotbugs
88-
org.apiguardian:apiguardian-api:1.1.2=latestDepTestCompileClasspath,testCompileClasspath
88+
org.apiguardian:apiguardian-api:1.1.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
8989
org.checkerframework:checker-qual:2.5.2=annotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor
9090
org.codehaus.groovy:groovy-all:3.0.17=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
9191
org.codehaus.groovy:groovy-ant:2.5.14=codenarc
@@ -130,14 +130,16 @@ org.jctools:jctools-core:3.3.0=instrumentPluginClasspath,latestDepTestRuntimeCla
130130
org.jetbrains:annotations:17.0.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
131131
org.junit.jupiter:junit-jupiter-api:5.9.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
132132
org.junit.jupiter:junit-jupiter-engine:5.9.2=latestDepTestRuntimeClasspath,testRuntimeClasspath
133-
org.junit.platform:junit-platform-commons:1.9.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
134-
org.junit.platform:junit-platform-engine:1.9.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
133+
org.junit.platform:junit-platform-commons:1.9.0=latestDepTestCompileClasspath,testCompileClasspath
134+
org.junit.platform:junit-platform-commons:1.9.2=latestDepTestRuntimeClasspath,testRuntimeClasspath
135+
org.junit.platform:junit-platform-engine:1.9.0=latestDepTestCompileClasspath,testCompileClasspath
136+
org.junit.platform:junit-platform-engine:1.9.2=latestDepTestRuntimeClasspath,testRuntimeClasspath
135137
org.junit.platform:junit-platform-launcher:1.9.2=latestDepTestRuntimeClasspath,testRuntimeClasspath
136-
org.junit.platform:junit-platform-runner:1.9.2=latestDepTestRuntimeClasspath,testRuntimeClasspath
137-
org.junit.platform:junit-platform-suite-api:1.9.2=latestDepTestRuntimeClasspath,testRuntimeClasspath
138-
org.junit.platform:junit-platform-suite-commons:1.9.2=latestDepTestRuntimeClasspath,testRuntimeClasspath
138+
org.junit.platform:junit-platform-runner:1.9.0=latestDepTestRuntimeClasspath,testRuntimeClasspath
139+
org.junit.platform:junit-platform-suite-api:1.9.0=latestDepTestRuntimeClasspath,testRuntimeClasspath
140+
org.junit.platform:junit-platform-suite-commons:1.9.0=latestDepTestRuntimeClasspath,testRuntimeClasspath
141+
org.junit:junit-bom:5.9.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
139142
org.junit:junit-bom:5.9.1=spotbugs
140-
org.junit:junit-bom:5.9.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
141143
org.objenesis:objenesis:3.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
142144
org.opentest4j:opentest4j:1.2.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
143145
org.ow2.asm:asm-analysis:9.2=instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath

dd-java-agent/instrumentation/lettuce-5/build.gradle

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,16 @@ addTestSuiteForDir('latestDepTest', 'test')
1515
dependencies {
1616
compileOnly group: 'io.lettuce', name: 'lettuce-core', version: '5.0.0.RELEASE'
1717

18-
testImplementation group: 'com.github.kstyrc', name: 'embedded-redis', version: '0.6'
18+
testImplementation group: 'com.redis.testcontainers', name: 'testcontainers-redis', version: '1.6.2'
19+
testImplementation libs.testcontainers
1920
testImplementation group: 'io.lettuce', name: 'lettuce-core', version: '5.0.0.RELEASE'
2021
testImplementation project(':dd-java-agent:instrumentation:reactor-core-3.1')
22+
testImplementation project(':dd-java-agent:instrumentation:reactive-streams')
23+
2124

2225
latestDepTestImplementation group: 'io.lettuce', name: 'lettuce-core', version: '5.+'
26+
27+
tasks.withType(Test).configureEach {
28+
usesService(testcontainersLimit)
29+
}
2330
}

0 commit comments

Comments
 (0)