feat(operator): auto-expand Ledger v3 PVCs - #1674
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. 🗂️ Base branches to auto review (1)
Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
✅ Approve — automated reviewThe active prior health-gate finding is fixed: a new leader now opens from fresh local evidence despite unavailable committed peers. No additional actionable defects were found in the current diff. No findings. |
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 1 new inline finding.
Summary: #1674 (comment)
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## release/v3.0 #1674 +/- ##
================================================
+ Coverage 77.13% 77.37% +0.23%
================================================
Files 478 478
Lines 51226 51380 +154
================================================
+ Hits 39514 39755 +241
+ Misses 8288 8192 -96
- Partials 3424 3433 +9
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 2 new inline findings.
Summary: #1674 (comment)
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 2 new inline findings.
Summary: #1674 (comment)
Finding majeur :
|
Note d’architecture : deux reconcilers sur le même CRDLe fait d’avoir plusieurs reconcilers qui prennent La contrepartie, c’est que les frontières d’ownership doivent être très nettes et que les deux reconcilers doivent partager les mêmes garde-fous de contrat. Sinon ils peuvent interpréter différemment la même spec. C’est exactement le risque visible ici : Je ne pense donc pas que le split en deux reconcilers soit forcément un problème à lui seul, mais il impose au minimum ces invariants :
Dans ce cadre, la correction du bug |
e830196 to
0138121
Compare
7a7a942 to
2f2c9fb
Compare
SummaryI verified both independent reviews against Standards1.
|
2f2c9fb to
b3a7bce
Compare
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 1 new inline finding.
Summary: #1674 (comment)
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot review complete: no remaining inline findings.
Resolved 1 stale NumaryBot review thread (0 fixed, 1 outdated).
Summary: #1674 (comment)
SummaryThis is a carefully built change: the pure policy module ( Standards1. [Medium] The sample-usability contract is duplicated inside the root module. 2. [Low] Contract-unreachable failure is handled with a silent 3. [Low] Two authoritative volume-definition tables with duplicated default sizes. 4. [Low] Dead accessors retained as delegates. Not retained: Spec1. [High] A peer that stays in the pool while unreachable pins the disk write gate closed with no bound and no override. 2. [Medium] The stated invariant is not actually achieved: a member absent from the connection pool contributes no sample at all. 3. [Medium] A permanently failing local 4. [Low-Medium] New runtime-only policy validation halts all reconciliation for the Cluster. 5. [Low-Medium] PVC patch has no optimistic lock, so a stale target can lose a concurrent request increase. 6. [Low] Not retained: the Chainsaw scenario limitation ( Reviewed independently by Claude (claude-opus-5) and Codex (gpt-5.6-sol) via Shipfox; verified and synthesized by Claude. |
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 1 new inline finding.
Summary: #1674 (comment)
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot review complete: no remaining inline findings.
Resolved 1 stale NumaryBot review thread (0 fixed, 1 outdated).
Summary: #1674 (comment)
SummaryThis PR adds a self-contained Standards1. [P2] The new envtest integration test is flaky by construction and bypasses the documented helper —
2. [P2] Two parallel authoritative volume tables with duplicated default sizes — The PR introduces 3. [P3] The sample validity/freshness rule now exists in three hand-written copies —
4. [P3] Branches that are unreachable by contract silently succeed instead of failing loudly (
5. [P3] Dead public API left behind by the peer-discovery switch —
Spec1. [P1] The newly documented recovery guarantee does not hold across a leadership change — The PR's stated property ("prevents invalid, stale, or unreachable health samples from clearing an existing disk write gate") is now written into 2. [P2] Measurements are collected only when the first policy decision is 3. [P2] Cooldown and group validity depend on unvalidated, externally editable PVC annotations —
Reviewed independently by Claude (claude-opus-5) and Codex (gpt-5.6-sol) via Shipfox; verified and synthesized by Claude. |
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 1 new inline finding.
Summary: #1674 (comment)
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot review complete: no remaining inline findings.
Resolved 1 stale NumaryBot review thread (0 fixed, 1 outdated).
Summary: #1674 (comment)
|
Addressed the current review feedback in 5b98400 and 3e3274a:
Validation is green on the current head: all GitHub checks pass, including unit/race, Operator, E2E Business, E2E Cluster, model, scenarios, Schemathesis, Antithesis workload, coverage, and PR image build. NumaryBot re-reviewed 3e3274a with no findings. |
|
Both independent reviews (Claude and Codex) were re-verified line by line against Standards
Spec
Rejected claims
Reviewed independently by Claude (claude-opus-5) and Codex (gpt-5.6-sol) via Shipfox; verified and synthesized by Claude. |
Summary
autoExpansionpolicy to WAL and data volume specsVolumeExpansionReconcilerthat measures each replica throughledgerctl cluster disk-usage --json, with no Prometheus server dependencymaximumSize, and recover from partial patches without in-memory stateSafety properties
maximumSizeCluster.spec.persistence.*.size, StatefulSet volume claim templates, or PVsStatfsfailure; invalid or stale values cannot trigger expansionautoExpansion.enabledis explicitly setValidation
bash scripts/agent-check— pass on the final treego test -race ./...— passscripts/internal/testenv/TestRunSynchronizedTimeoutTerminatesAndReportsEveryPeerload flake; the test passes 10/10 in isolation under-raceeda02a574— all checks pass, including unit, Operator, model, scenario, Schemathesis, Antithesis workload, business/cluster E2E, coverage aggregation, and PR image buildrelease/v3.0)volume-auto-expansion-contractscenario against KindThe EKS staging canary remains an operational follow-up because no staging target was available in this workspace.
Jira: EN-1749
Parent: EN-867