test(inkless:consolidation): add read-from-remote system tests, harness support#654
Merged
Merged
Conversation
viktorsomogyi
force-pushed
the
svv/ts-unification-recovery-systest
branch
2 times, most recently
from
June 16, 2026 19:37
7bd6055 to
055dd90
Compare
viktorsomogyi
force-pushed
the
svv/ts-unification-recover-leader
branch
from
June 23, 2026 08:44
3437d4c to
986aaa3
Compare
viktorsomogyi
force-pushed
the
svv/ts-unification-recovery-systest
branch
from
June 23, 2026 08:45
055dd90 to
6451701
Compare
viktorsomogyi
force-pushed
the
svv/ts-unification-recover-leader
branch
2 times, most recently
from
June 23, 2026 12:17
d29c23c to
17d63d7
Compare
viktorsomogyi
force-pushed
the
svv/ts-unification-recovery-systest
branch
from
June 23, 2026 12:59
6451701 to
6e205fa
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
Adds Inkless consolidation system tests that validate read-from-remote behavior after WAL pruning and complete local log loss across multiple consolidation entry paths, plus KafkaService harness support for atomic multi-config topic alters required by some transitions.
Changes:
- Add born-consolidated durability system test verifying earliest/first-fetch-from-0 after wipe+restart.
- Add switched classic→diskless consolidated durability system test covering classic-epoch boundary reads after prune + wipe.
- Add upgrade test covering untiered-diskless → consolidation-enabled transition and end-to-end readability.
- Extend
KafkaServicewithalter_topic_configs()to apply multiple topic configs in onekafka-configs --add-configinvocation.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| tests/kafkatest/tests/inkless/consolidation_switched_read_from_remote_after_prune_test.py | New switched-topic durability test; includes offset/read helpers using console-consumer. |
| tests/kafkatest/tests/inkless/consolidation_read_from_remote_after_prune_test.py | New born-consolidated durability test verifying earliest and fetch-from-0 after wipe+restart. |
| tests/kafkatest/tests/inkless/consolidation_enable_on_untiered_diskless_test.py | New upgrade test for enabling consolidation on an existing untiered diskless topic. |
| tests/kafkatest/services/kafka/kafka.py | Adds atomic multi-config topic alter helper (alter_topic_configs). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
viktorsomogyi
changed the base branch from
svv/ts-unification-recover-leader
to
svv/ts-unification-systest-test1
June 23, 2026 14:27
viktorsomogyi
force-pushed
the
svv/ts-unification-recovery-systest
branch
from
June 23, 2026 14:28
6e205fa to
253d3c7
Compare
viktorsomogyi
force-pushed
the
svv/ts-unification-systest-test1
branch
from
June 23, 2026 14:30
1395419 to
b31f319
Compare
viktorsomogyi
force-pushed
the
svv/ts-unification-recovery-systest
branch
3 times, most recently
from
June 23, 2026 14:44
d78b81f to
643ff3d
Compare
viktorsomogyi
force-pushed
the
svv/ts-unification-recovery-systest
branch
from
June 23, 2026 14:51
643ff3d to
24eea0d
Compare
viktorsomogyi
force-pushed
the
svv/ts-unification-recovery-systest
branch
from
June 23, 2026 15:01
24eea0d to
380bfa8
Compare
viktorsomogyi
force-pushed
the
svv/ts-unification-recovery-systest
branch
from
June 23, 2026 15:27
380bfa8 to
8a416c4
Compare
viktorsomogyi
force-pushed
the
svv/ts-unification-recover-leader
branch
from
June 29, 2026 15:53
c551884 to
89f76e2
Compare
viktorsomogyi
force-pushed
the
svv/ts-unification-recovery-systest
branch
from
June 29, 2026 15:58
1353235 to
7ef5195
Compare
viktorsomogyi
changed the base branch from
svv/ts-unification-recover-leader
to
svv/ts-unification-systest-test1
June 29, 2026 16:00
viktorsomogyi
marked this pull request as draft
June 29, 2026 16:01
viktorsomogyi
force-pushed
the
svv/ts-unification-systest-test1
branch
from
June 30, 2026 09:44
21101ef to
162024b
Compare
viktorsomogyi
force-pushed
the
svv/ts-unification-recovery-systest
branch
from
June 30, 2026 09:54
7ef5195 to
a5d0879
Compare
viktorsomogyi
force-pushed
the
svv/ts-unification-systest-test1
branch
from
June 30, 2026 11:38
162024b to
3b59a48
Compare
viktorsomogyi
force-pushed
the
svv/ts-unification-recovery-systest
branch
2 times, most recently
from
June 30, 2026 14:58
9b7ae16 to
0011cb9
Compare
viktorsomogyi
changed the base branch from
main
to
svv/ts-unification-leader-below-seal
June 30, 2026 15:38
viktorsomogyi
force-pushed
the
svv/ts-unification-leader-below-seal
branch
2 times, most recently
from
July 1, 2026 09:08
53c392e to
e526d64
Compare
viktorsomogyi
force-pushed
the
svv/ts-unification-recovery-systest
branch
from
July 1, 2026 13:50
0011cb9 to
73f50b4
Compare
viktorsomogyi
marked this pull request as ready for review
July 1, 2026 14:41
viktorsomogyi
force-pushed
the
svv/ts-unification-recovery-systest
branch
from
July 1, 2026 14:43
73f50b4 to
b068188
Compare
viktorsomogyi
marked this pull request as draft
July 1, 2026 15:20
viktorsomogyi
force-pushed
the
svv/ts-unification-recovery-systest
branch
from
July 2, 2026 09:23
b068188 to
3fc45f7
Compare
viktorsomogyi
marked this pull request as ready for review
July 2, 2026 09:24
…ss support Adds system tests proving consolidated diskless topics stay readable after every local copy is destroyed, reads must be served from the remote tier (MinIO) + control plane (Postgres) alone. Covers all three consolidation entry points, plus the KafkaService/ConsolidationVerifier harness support they depend on. - ReadFromRemoteAfterPruneTest: born-consolidated. Produce, let consolidation tier and prune the WAL, wipe all local logs, restart empty, and assert remote-only reads are lossless (earliest == 0, fetch from 0 returns 0, contiguous content, full read-back). - SwitchedReadFromRemoteAfterPruneTest: classic→diskless (switched). Same wipe-and-read pattern; offset 0 lives in the classic interval under the classic epoch, so serving it from remote requires the rebuild to resolve that epoch. Also asserts a window straddling the seal is contiguous with correct content across the boundary. - ConsolidationEnabledOnUntieredDisklessTest: upgrade transition. Reach an untiered-diskless topic with consolidation OFF, flip the cluster-wide feature on via in-flight restart, then remote.storage.enable=true to start consolidating without a leader change. Asserts the remote tier grows, the WAL prunes above the seal, and reads stay lossless across the seal (nothing is wiped). Co-authored-by: Cursor <cursoragent@cursor.com>
viktorsomogyi
force-pushed
the
svv/ts-unification-recovery-systest
branch
from
July 2, 2026 12:19
3fc45f7 to
095b60b
Compare
jeqo
approved these changes
Jul 2, 2026
jeqo
pushed a commit
that referenced
this pull request
Jul 8, 2026
…ss support (#654) Adds system tests proving consolidated diskless topics stay readable after every local copy is destroyed, reads must be served from the remote tier (MinIO) + control plane (Postgres) alone. Covers all three consolidation entry points, plus the KafkaService/ConsolidationVerifier harness support they depend on. - ReadFromRemoteAfterPruneTest: born-consolidated. Produce, let consolidation tier and prune the WAL, wipe all local logs, restart empty, and assert remote-only reads are lossless (earliest == 0, fetch from 0 returns 0, contiguous content, full read-back). - SwitchedReadFromRemoteAfterPruneTest: classic→diskless (switched). Same wipe-and-read pattern; offset 0 lives in the classic interval under the classic epoch, so serving it from remote requires the rebuild to resolve that epoch. Also asserts a window straddling the seal is contiguous with correct content across the boundary. - ConsolidationEnabledOnUntieredDisklessTest: upgrade transition. Reach an untiered-diskless topic with consolidation OFF, flip the cluster-wide feature on via in-flight restart, then remote.storage.enable=true to start consolidating without a leader change. Asserts the remote tier grows, the WAL prunes above the seal, and reads stay lossless across the seal (nothing is wiped). Co-authored-by: Cursor <cursoragent@cursor.com>
jeqo
pushed a commit
that referenced
this pull request
Jul 8, 2026
…ss support (#654) Adds system tests proving consolidated diskless topics stay readable after every local copy is destroyed, reads must be served from the remote tier (MinIO) + control plane (Postgres) alone. Covers all three consolidation entry points, plus the KafkaService/ConsolidationVerifier harness support they depend on. - ReadFromRemoteAfterPruneTest: born-consolidated. Produce, let consolidation tier and prune the WAL, wipe all local logs, restart empty, and assert remote-only reads are lossless (earliest == 0, fetch from 0 returns 0, contiguous content, full read-back). - SwitchedReadFromRemoteAfterPruneTest: classic→diskless (switched). Same wipe-and-read pattern; offset 0 lives in the classic interval under the classic epoch, so serving it from remote requires the rebuild to resolve that epoch. Also asserts a window straddling the seal is contiguous with correct content across the boundary. - ConsolidationEnabledOnUntieredDisklessTest: upgrade transition. Reach an untiered-diskless topic with consolidation OFF, flip the cluster-wide feature on via in-flight restart, then remote.storage.enable=true to start consolidating without a leader change. Asserts the remote tier grows, the WAL prunes above the seal, and reads stay lossless across the seal (nothing is wiped). Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds system tests proving consolidated diskless topics stay readable after every local copy is destroyed — reads must be served from the remote tier (MinIO) + control plane (Postgres) alone. Covers all three consolidation entry points, plus the KafkaService/ConsolidationVerifier harness support they depend on.
Tests
ReadFromRemoteAfterPruneTest: born-consolidated. Produce, let consolidation tier and prune the WAL, wipe all local logs, restart empty, and assert remote-only reads are lossless (earliest == 0, fetch from 0 returns 0, contiguous content, full read-back).
SwitchedReadFromRemoteAfterPruneTest: classic→diskless (switched). Same wipe-and-read pattern; offset 0 lives in the classic interval under the classic epoch, so serving it from remote requires the rebuild to resolve that epoch. Also asserts a window straddling the seal is contiguous with correct content across the boundary.
ConsolidationEnabledOnUntieredDisklessTest: upgrade transition. Reach an untiered-diskless topic with consolidation OFF, flip the cluster-wide feature on via in-flight restart, then remote.storage.enable=true to start consolidating without a leader change. Asserts the remote tier grows, the WAL prunes above the seal, and reads stay lossless across the seal (nothing is wiped).
Harness
KafkaService.alter_topic_configs for the atomic in-place config transitions the switched and upgrade tests rely on (combined diskless.enable + remote.storage.enable alter that seals and starts consolidation in one step; the remote-only flip that starts fetchers via the config hook).
ConsolidationVerifier extensions: MinIO tiered-object queries, Postgres WAL-batch / log-start queries, JMX consolidation-gauge scraping, remote-read and cross-boundary contiguity checks, and a local-log wipe helper.