Repository navigation
docs(reporting-storage): say how to deploy the 0.2.0b1 ledger upgrade without breaking old pods - #1855
Merged
Conversation
… without breaking old pods A default rolling update leaves the earlier release's pods running after the first new pod has upgraded the ledger at startup. Those pods can still read, but they can no longer record a generation or close a period, and with status notifications they can no longer record status checkpoints. Each write names a conflict key that migrations 0002 and 0006 widened. If one restarts, it cannot start Reliable Reporting, and its error points at migrate_legacy_reporting, which does not apply here and would quarantine state. Add "Deploying the upgrade" to the ledger migration guide. It lists those symptoms, says to ignore the hint, and says there is no rollback short of restoring a backup. It gives two safe shapes: a Recreate rollout, or two phases (redeploy the earlier release with reporting off, then roll forward). Point to it from MIGRATION_v9_to_v10.md and the storage README. Refs #1831 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Ladon verdict: Approve
Approve — docs-only PR, no findings.
This PR adds a "Deploying the upgrade" section to the reporting-ledger migration guide plus linked warnings in MIGRATION_v9_to_v10.md and the storage README. No code, wire, schema, or public-API surface is touched (3 files: all Markdown, +61/-2).
Checks applied:
- No critical/high findings (row 1 N/A).
- gated_paths: false (row 2 N/A).
- high_risk: false; no deleted/modified high-risk paths (rows 3, 5 N/A).
- No medium findings in data-loss/schema/infra (row 4 N/A).
- No prior decision (row 6 N/A).
- No no-auto-approve team match (row 7 N/A).
- Zero medium findings (row 8 N/A).
- Falls through to row 9 → approve.
Reviewer verified every load-bearing doc claim against source (error strings, migration ownership 0001–0003, status-checkpoint widening at 0006, anchor match, deployment sequence stops old workers first). Accurate and well-sourced.
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.
This is the docs part of #1831, option 3 in the issue. It doesn't change any code.
The problem. With
store=, the first new pod upgrades the ledger when it starts (migration 0002, plus 0006 when status notifications are on). A default rolling update keeps the earlier release's pods running against the upgraded ledger. I reproduced this with the published wheels (adcp==9.3.1+adcp-reporting-storage[pg]==0.1.0b4→adcp==10.0.0b8+0.2.0b1) on PostgreSQL. Those pods:put_configuration, becauseON CONFLICTnames the four-column key and the primary key is now five columns (42P10);commit_obligationasLedgerConflictError … integrity rule. 0002 rebuilt the period key withoffering_id, so the oldON CONFLICThas no matching index (42P10, wrapped). Every generation in a worker turn reports it;migrate_legacy_reporting. That's the 8 → 9 caller-ownership migration; it doesn't apply here and would quarantine state.The new release reads everything the old one wrote, so nothing is corrupted.
The change:
docs/reporting-ledger-migration.mdgets a new "Deploying the upgrade" section with:python -m adcp migrate/ReportingStatusService.migrate().MIGRATION_v9_to_v10.mdand the storage README get short warnings that link to it. The README link points atblob/next, since the section isn't onmain.Refs #1831. The issue stays open for the code options: a clearer refusal in 0.1.0b5, and/or an expand/contract upgrade.
🤖 Generated with Claude Code