diff --git a/dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-21.0/build.gradle b/dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-21.0/build.gradle index 7a42cad69ed..28c7bc2eeea 100644 --- a/dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-21.0/build.gradle +++ b/dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-21.0/build.gradle @@ -1,6 +1,4 @@ apply from: "$rootDir/gradle/java.gradle" -// Use slf4j-simple as default; logback has a high chance of getting stuck in a deadlock on CI. -apply from: "$rootDir/gradle/slf4j-simple.gradle" apply plugin: 'idea' testJvmConstraints { @@ -49,6 +47,13 @@ tasks.named("check") { dependsOn "previewTest" } +// Use latest logback for Java 21+ tests with better virtual thread support. +configurations.named("testRuntimeClasspath") { + resolutionStrategy { + force libs.logback.classic.latest + } +} + dependencies { testImplementation project(':dd-java-agent:instrumentation:datadog:tracing:trace-annotation') } diff --git a/dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-25.0/build.gradle b/dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-25.0/build.gradle index 4771160aeaf..5dbe0eb48c5 100644 --- a/dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-25.0/build.gradle +++ b/dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-25.0/build.gradle @@ -1,3 +1,7 @@ +plugins { + id 'idea' +} + apply from: "$rootDir/gradle/java.gradle" muzzle { @@ -5,3 +9,16 @@ muzzle { coreJdk('25') } } + +idea { + module { + jdkName = '25' + } +} + +// Use latest logback for Java 21+ tests with better virtual thread support. +configurations.named("testRuntimeClasspath") { + resolutionStrategy { + force libs.logback.classic.latest + } +} diff --git a/dd-java-agent/instrumentation/java/java-lang/java-lang-21.0/build.gradle b/dd-java-agent/instrumentation/java/java-lang/java-lang-21.0/build.gradle index 97c18d0e083..34694aac557 100644 --- a/dd-java-agent/instrumentation/java/java-lang/java-lang-21.0/build.gradle +++ b/dd-java-agent/instrumentation/java/java-lang/java-lang-21.0/build.gradle @@ -3,8 +3,6 @@ plugins { } apply from: "$rootDir/gradle/java.gradle" -// Use slf4j-simple as default; logback has a high chance of getting stuck in a deadlock on CI. -apply from: "$rootDir/gradle/slf4j-simple.gradle" testJvmConstraints { minJavaVersion = JavaVersion.VERSION_21 @@ -30,3 +28,11 @@ tasks.named("compileTestJava", JavaCompile) { dependencies { testImplementation project(':dd-java-agent:instrumentation:datadog:tracing:trace-annotation') } + +// Use latest logback for Java 21+ tests with better virtual thread support. +configurations.named("testRuntimeClasspath") { + resolutionStrategy { + force libs.logback.classic.latest + } +} + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a4ee463ff89..829c7e5c11d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -57,6 +57,7 @@ lz4 = "1.7.1" # Logging slf4j = "1.7.30" logback = "1.2.13" +logback-latest = "1.5.27" # JSON jackson = "2.20.0" @@ -134,6 +135,7 @@ lz4 = { module = "org.lz4:lz4-java", version.ref = "lz4" } # Logging logback-classic = { module = "ch.qos.logback:logback-classic", version.ref = "logback" } +logback-classic-latest = { module = "ch.qos.logback:logback-classic", version.ref = "logback-latest" } logback-core = { module = "ch.qos.logback:logback-core", version.ref = "logback" } log4j-over-slf4j = { module = "org.slf4j:log4j-over-slf4j", version.ref = "slf4j" } jcl-over-slf4j = { module = "org.slf4j:jcl-over-slf4j", version.ref = "slf4j" } diff --git a/gradle/slf4j-simple.gradle b/gradle/slf4j-simple.gradle deleted file mode 100644 index a83ef57a71a..00000000000 --- a/gradle/slf4j-simple.gradle +++ /dev/null @@ -1,27 +0,0 @@ -// Apply this script when `slf4j-simple` should be used instead of `logback`. - -configurations.configureEach { cfg -> - def name = cfg.name - - if (name.containsIgnoreCase("test")) { - // Exclude Logback from all test-like runtimeClasspath configurations. - if (name.endsWithIgnoreCase("runtimeClasspath")) { - cfg.exclude group: "ch.qos.logback" - } - - // Add slf4j-simple to all test-like runtimeOnly configurations. - if (name.endsWithIgnoreCase("runtimeOnly")) { - project.dependencies.add(name, "org.slf4j:slf4j-simple:${libs.versions.slf4j.get()}") - } - } -} - -// Configure `slf4j-simple` logger. -tasks.withType(Test).configureEach { - jvmArgs += [ - "-Dorg.slf4j.simpleLogger.defaultLogLevel=debug", - "-Dorg.slf4j.simpleLogger.showThreadName=true", - "-Dorg.slf4j.simpleLogger.showDateTime=true", - "-Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss.SSS" - ] -}