Skip to content

KAFKA-20850: Add system test for suppress() changelog across the HEADERS boundary - #23075

Open
aliehsaeedii wants to merge 1 commit into
apache:trunkfrom
aliehsaeedii:kafka-20850-suppress-headers-upgrade-system-test
Open

KAFKA-20850: Add system test for suppress() changelog across the HEADERS boundary#23075
aliehsaeedii wants to merge 1 commit into
apache:trunkfrom
aliehsaeedii:kafka-20850-suppress-headers-upgrade-system-test

Conversation

@aliehsaeedii

@aliehsaeedii aliehsaeedii commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

The smoke-test application already uses suppress(untilWindowCloses(...)) (SmokeTestClient#183,195), and streams_application_upgrade_test.py already drives it across versions — but no system test ever set dsl.store.format. With the config unset, the headers-aware suppress buffer writes byte-identical V3 records, so the existing matrix passes regardless of KAFKA-20413.

This adds a HEADERS-configured transition across the 4.3/trunk boundary in both directions.

No API, protocol, or KIP changes; test-only.

🤖 Generated with Claude Code

…ERS boundary

The smoke-test application already uses suppress(untilWindowCloses(...)), and
streams_application_upgrade_test.py already drives it across versions, but no
system test ever set dsl.store.format. With the config unset the headers-aware
suppress buffer writes byte-identical V3 records, so the existing matrix passes
regardless of the change in KAFKA-20413.

Add a HEADERS-configured transition that crosses the 4.3/trunk boundary in both
directions. 4.3 has the dsl.store.format config but not the headers-aware
buffer, so it writes the whole BufferValue into the record value, while trunk
writes only the plain value bytes and ships the value/timestamp/headers
prefixes in extra Kafka record headers -- both tagged V3. Since the suppress
buffer is in-memory only, every restart replays its full changelog, so the
transition exercises a real cross-format restore.

- Add an extra_configs pass-through to StreamsSmokeTestBaseService and
  StreamsSmokeTestJobRunnerService, merged last in prop_file() so a test can
  override the smoke defaults.
- Extract _run_app_transition() from test_app_upgrade() so the target version is
  a parameter rather than hardcoded to DEV_VERSION, which is what the downgrade
  direction needs. test_app_upgrade() keeps passing DEV_VERSION, so its matrix
  behavior is unchanged.
- Add test_suppress_headers_app_transition, parameterized on direction.
- Assert no instance logged a suppress-changelog restore rejection during the
  transition. A misread record is otherwise silent, and the existing harness
  does not compare output topics (KAFKA-10202).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added triage PRs from the community tests Test fixes (including flaky tests) small Small PRs labels Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

small Small PRs tests Test fixes (including flaky tests) triage PRs from the community

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant