Skip to content

Commit 19ee457

Browse files
bm1549devflow.devflow-routing-intake
andauthored
Mark check raw file injection as @flaky on Zulu 8 (#11375)
Mark check raw file injection as @flaky on Zulu 8 The smoketest fails ~0.25% of the time on Zulu 8 with `logLines.size() == 7` (got 3) — root cause is a JDK 8 race between java.util.logging.LogManager.<clinit> and ClassLoader.initSystemClassLoader() when a JFR-instrumented class (Zulu 8 backports JFR) loads JUL during agent premain. The Agent.java waitForJUL guard mitigates most cases but leaks ~0.25%. The same failure mode already justifies @flaky on Oracle JDK 8 (same JFR backport) and IBM 8 (IBMSASL triggers the same race); Zulu 8 belongs alongside them. This adds JavaVirtualMachine.isZulu8() + a test + extends the @flaky condition. No production code path changes — Zulu 8 users on a custom LogManager (e.g. Log4j2 JUL bridge) are still potentially affected by the underlying agent race; this only suppresses the flaky CI signal. Match isIbm8 ordering: vendor check first, drop redundant javadoc ci: retrigger (muzzle Maven mirror flakes) Merge branch 'master' into brian.marks/flaky-zulu8-log-injection Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
1 parent ed7e5f3 commit 19ee457

3 files changed

Lines changed: 15 additions & 1 deletion

File tree

components/environment/src/main/java/datadog/environment/JavaVirtualMachine.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,10 @@ public static boolean isIbm8() {
116116
return isIbm() && isJavaVersion(8);
117117
}
118118

119+
public static boolean isZulu8() {
120+
return runtime.vendor.contains("Azul") && isJavaVersion(8);
121+
}
122+
119123
public static boolean isGraalVM() {
120124
return runtime.vendorVersion.toLowerCase().contains("graalvm");
121125
}

components/environment/src/test/java/datadog/environment/JavaVirtualMachineTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,16 @@ void onlyOnOracleJDK8() {
138138
assertTrue(JavaVirtualMachine.isOracleJDK8());
139139
}
140140

141+
@Test
142+
@EnabledIfSystemProperty(named = "java.vm.vendor", matches = ".*Azul.*")
143+
@EnabledOnJre(JAVA_8)
144+
void onlyOnZulu8() {
145+
assertFalse(JavaVirtualMachine.isGraalVM());
146+
assertFalse(JavaVirtualMachine.isIbm8());
147+
assertFalse(JavaVirtualMachine.isOracleJDK8());
148+
assertTrue(JavaVirtualMachine.isZulu8());
149+
}
150+
141151
@ParameterizedTest
142152
@CsvSource(
143153
value = {

dd-smoke-tests/log-injection/src/test/groovy/datadog/smoketest/LogInjectionSmokeTest.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ abstract class LogInjectionSmokeTest extends AbstractSmokeTest {
416416
return unmangled.split(" ")[1..2]
417417
}
418418

419-
@Flaky(condition = () -> JavaVirtualMachine.isIbm8() || JavaVirtualMachine.isOracleJDK8())
419+
@Flaky(condition = () -> JavaVirtualMachine.isIbm8() || JavaVirtualMachine.isOracleJDK8() || JavaVirtualMachine.isZulu8())
420420
def "check raw file injection"() {
421421
when:
422422
def count = waitForTraceCountAlive(2)

0 commit comments

Comments
 (0)