pingqiu
08e34e02ae
feat: separate CommittedLSN from CheckpointLSN, close catch-up ONE CHAIN (Phase 08 P2)
CommittedLSN separation:
- StatusSnapshot().CommittedLSN = nextLSN-1 (WAL head) for sync_all
- Was: flusher.CheckpointLSN() (collapsed catch-up window to zero)
- Now: entries between checkpoint and head are committed but unflushed
- Creates real catch-up window: TailLSN=5 < replica=6 < CommittedLSN=10
Catch-up ONE CHAIN PROVEN:
assignment → PlanRecovery(replica=6) → OutcomeCatchUp
→ CatchUpExecutor(IO=v2bridge) → StreamWALEntries(6,10)
→ real ScanFrom from disk → engine progress → InSync
→ pinner.ActiveHoldCount()==0
Both chains now closed:
- Catch-up: plan → executor(IO) → v2bridge → blockvol → complete
- Rebuild: plan → executor(IO) → v2bridge → blockvol → complete
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 15:22:23 -07:00
..
2026-02-26 19:20:48 -08:00
2026-02-23 20:19:12 -08:00
2026-03-08 16:52:37 -07:00
2026-02-19 14:21:19 -08:00
2026-02-20 18:42:00 -08:00
2026-02-19 15:46:02 -08:00
2026-01-07 13:06:08 -08:00
2026-02-23 22:59:53 -08:00
2026-02-25 10:25:23 -08:00
2026-01-07 13:06:08 -08:00
2025-08-22 22:10:30 -07:00
2026-02-20 18:42:00 -08:00
2026-01-22 14:05:45 -08:00
2026-02-20 18:42:00 -08:00
2026-02-10 19:06:35 -08:00
2026-03-22 14:44:24 -07:00
2026-02-26 19:46:38 -08:00
2026-02-19 15:46:02 -08:00
2026-02-25 10:25:44 -08:00
2026-02-20 18:42:00 -08:00
2026-02-26 16:36:24 -08:00
2026-01-12 13:21:48 -08:00
2026-01-07 13:06:08 -08:00
2026-03-31 13:38:30 -07:00
2026-02-25 14:30:21 -08:00
2026-03-06 01:06:51 -08:00
2024-02-14 08:26:38 -08:00
2026-02-20 18:42:00 -08:00
2026-03-31 15:22:23 -07:00
2026-01-18 14:02:34 -08:00
2026-02-18 13:42:41 -08:00
2026-02-20 18:42:00 -08:00
2026-01-22 14:07:24 -08:00
2026-02-25 22:11:41 -08:00
2026-02-23 16:27:08 -08:00
2025-12-25 11:36:38 -08:00