Skip to content

refactor(storage): decouple table change logs from hummock versions - #26561

Open
wenym1 wants to merge 4 commits into
mainfrom
wenym1/table-change-log-delta-refactor
Open

refactor(storage): decouple table change logs from hummock versions#26561
wenym1 wants to merge 4 commits into
mainfrom
wenym1/table-change-log-delta-refactor

Conversation

@wenym1

@wenym1 wenym1 commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.

What's changed and what's your intention?

This PR decouples table change logs from persisted Hummock MVCC version metadata. Table change-log SSTs are already persisted and tracked independently, so storing them in HummockVersion and serialized HummockVersionDelta duplicated state and incorrectly pulled them into version-based GC accounting.

  • Remove table change logs from the runtime Hummock version, frontend projections, time-travel versions, and local pinned versions.
  • Keep change-log deltas alongside each Hummock version delta in meta's transient SingleDeltaTransaction, while omitting them from Hummock version serialization.
  • Persist table change-log updates transactionally through meta's independent table change-log state.
  • Stop including table change-log SSTs in Hummock version GC object collection.
  • Keep protobuf fields 6 and 10 as deprecated compatibility fields. Persisted legacy values are warned about and ignored, while newly serialized versions and deltas leave the fields empty.
  • Remove the completed startup migration and legacy delta replay path.
  • Make backward-compatibility tests upgrade through the latest stable patch of each intermediate release line. Intermediate clusters run only the synchronous RECOVER command before stopping; the full validation suite runs only on the final version. This preserves one-time migrations when testing skipped release lines, for example v2.8.5 → v3.0.2 → v3.1.0.

Testing

  • cargo test -p risingwave_hummock_sdk deprecated_change_log_delta_is_ignored
  • cargo test -p risingwave_meta deprecated_table_change_logs_are_ignored
  • cargo test -p risingwave_meta manager::transaction::tests
  • cargo test -p risingwave_hummock_test test_iter_log
  • cargo check -p risingwave_hummock_sdk -p risingwave_meta -p risingwave_storage -p risingwave_hummock_test --all-targets
  • cargo clippy --all-targets --all-features
  • bash -n ci/scripts/backwards-compat-test.sh e2e_test/backwards-compat-tests/scripts/utils.sh e2e_test/backwards-compat-tests/scripts/run_local.sh
  • Parsed ci/workflows/pull-request.yml and ci/workflows/main-cron.yml as YAML.
  • Verified backward-compatibility version selection for matrix offsets 1 through 4.
  • Verified retry-until-success behavior for the RECOVER command.

Checklist

  • I have written necessary rustdoc comments.
  • I have added necessary unit tests and integration tests.
  • I have added test labels as necessary.
  • I have added fuzzing tests or opened an issue to track them.
  • My PR contains breaking changes.
  • My PR changes performance-critical code, so I will run (micro) benchmarks and present the results.
  • I have checked the Release Timeline and Currently Supported Versions to determine which release branches I need to cherry-pick this PR into.

Documentation

  • My PR needs documentation updates.
Release note

None. This is an internal storage metadata refactor.

@github-actions github-actions Bot added type/fix Type: Bug fix. Only for pull requests. ci/run-e2e-single-node-tests labels Aug 4, 2026

wenym1 commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@wenym1 wenym1 changed the title fix(frontend): resolve fixed backfill order for index scans (#26486) refactor(storage): decouple table change logs from hummock versions Aug 4, 2026
@github-actions github-actions Bot added the type/refactor Type: Refactoring. label Aug 4, 2026
@wenym1 wenym1 added the ci/run-backwards-compat-tests Run backwards compatibility tests in your PR. label Aug 4, 2026
@wenym1
wenym1 force-pushed the wenym1/table-change-log-delta-refactor branch from e8f3b72 to c0e25ea Compare August 4, 2026 10:18
@wenym1
wenym1 requested review from hzxa21 and zwang28 August 4, 2026 11:42
@wenym1 wenym1 added A-ci Area: CI workflow and scripts, etc. A-test Area: Testing framework & misc tests not belonging to any specific component. labels Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-ci Area: CI workflow and scripts, etc. A-test Area: Testing framework & misc tests not belonging to any specific component. ci/run-backwards-compat-tests Run backwards compatibility tests in your PR. ci/run-e2e-single-node-tests type/fix Type: Bug fix. Only for pull requests. type/refactor Type: Refactoring.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant