fix(ci): switch Kafka from native to JVM image to prevent SIGILL crashes#7708
fix(ci): switch Kafka from native to JVM image to prevent SIGILL crashes#7708
Conversation
apache/kafka-native:3.9.1 is a GraalVM native binary compiled for specific CPU instruction set extensions (AVX2/AVX-512). On GitHub-hosted runners with heterogeneous CPUs that lack those extensions, the container crashes with SIGILL before any tests run. The JVM-based apache/kafka:3.9.1 detects CPU capabilities at runtime and avoids the crash. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Overall package sizeSelf size: 4.96 MB Dependency sizes| name | version | self size | total size | |------|---------|-----------|------------| | import-in-the-middle | 3.0.0 | 81.15 kB | 815.98 kB | | dc-polyfill | 0.1.10 | 26.73 kB | 26.73 kB |🤖 This report was automatically generated by heaviest-objects-in-the-universe |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #7708 +/- ##
=======================================
Coverage 80.42% 80.42%
=======================================
Files 741 741
Lines 32177 32177
=======================================
+ Hits 25878 25879 +1
+ Misses 6299 6298 -1 Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
BenchmarksBenchmark execution time: 2026-03-13 14:40:00 Comparing candidate commit 3553c90 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 230 metrics, 30 unstable metrics. |
BridgeAR
left a comment
There was a problem hiding this comment.
LGTM, while it is actually difficult to confirm the claim of fixing the issue. Replacing the experimental one with the stable one is good on its own though :)
…hes (#7708) apache/kafka-native:3.9.1 is a GraalVM native binary compiled for specific CPU instruction set extensions (AVX2/AVX-512). On GitHub-hosted runners with heterogeneous CPUs that lack those extensions, the container crashes with SIGILL before any tests run. The JVM-based apache/kafka:3.9.1 detects CPU capabilities at runtime and avoids the crash. Co-authored-by: Claude Sonnet 4.6 <[email protected]>
…hes (#7708) apache/kafka-native:3.9.1 is a GraalVM native binary compiled for specific CPU instruction set extensions (AVX2/AVX-512). On GitHub-hosted runners with heterogeneous CPUs that lack those extensions, the container crashes with SIGILL before any tests run. The JVM-based apache/kafka:3.9.1 detects CPU capabilities at runtime and avoids the crash. Co-authored-by: Claude Sonnet 4.6 <[email protected]>
What does this PR do?
Switches CI and local dev Kafka images from
apache/kafka-native:3.9.1(GraalVM native binary) toapache/kafka:3.9.1(standard JVM) to prevent SIGILL crashes on GitHub-hosted runners.Files changed:
docker-compose.yml— local dev Kafka service.github/workflows/apm-integrations.yml—confluentinc-kafka-javascriptandkafkajsCI jobs.github/workflows/appsec.yml— AppSec Kafka CI jobMotivation
apache/kafka-native:3.9.1is a GraalVM native binary compiled for specific CPU instruction set extensions (AVX2/AVX-512). On GitHub-hosted runners with heterogeneous CPU generations that lack those extensions, the container crashes with SIGILL before any tests run — causing an intermittent ~2-3% failure rate across Kafka-dependent CI jobs.Switching to the JVM-based image avoids this because the JVM detects CPU capabilities at runtime.
Additional Notes
Performance impact: The JVM image is slower to start (~5-10s vs ~1-2s for the native image), but this startup happens in parallel with job setup steps (dependency installation, etc.), so it adds effectively zero observable delay to test wall-clock time. The actual Kafka test execution time is unchanged — only the container startup differs.
Memory impact (measured):
apache/kafka:3.9.1(JVM)apache/kafka-native:3.9.1(native)The JVM image uses ~100 MiB more (~1.3% of the 7 GB available on GitHub-hosted runners).
🤖 Generated with Claude Code