Skip to content

Persist summary retirement and removal across restart - #633

Merged
zzylol merged 2 commits into
mainfrom
fix/durable-summary-lifecycle
Sep 11, 2026
Merged

zzylol merged 2 commits into
mainfrom
fix/durable-summary-lifecycle

Conversation

@zzylol

@zzylol zzylol commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Retired, expired, or removed summary instances could reappear after restart because the durable sidecar stored identity but discarded lifecycle state. This preserves retirement and expiry deadlines and records removal tombstones before changing the live inventory.

The flusher and lifecycle operations share one metadata writer. Monotone record merging prevents an older flush snapshot from clearing a newer tombstone or extending an expiry deadline. If the durable write fails, the live instance stays unchanged. Instances whose definition has left the desired catalog retain their existing persisted provenance during cleanup.

Before: removing a durable SID and restarting could register it again from existing disk parts. After: recovery skips its tombstone, even if a stale flush arrives after removal.

Verification: two focused regressions pass: real disk flush → retirement/expiry/removal → stale metadata replay → restart, and a failing sidecar write leaving the live instance unchanged. The parent identity PR supplies the real process restart/readout test. Performance measurements are not applicable.

Stacked on #630. Tombstones are retained; physical part reclamation and tombstone garbage collection are separate work. This does not make the in-memory admission ledger crash-durable or establish cross-generation state reuse.

@zzylol
zzylol changed the base branch from fix/durable-summary-identity to main September 11, 2026 02:19
@zzylol
zzylol marked this pull request as ready for review September 11, 2026 04:01
@zzylol
zzylol merged commit 609af41 into main Sep 11, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant