| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
|
rerun failure checks |
Sorry, something went wrong.
…x/dbledger-composite-checkpoint-coverage
| Back | FazBrowse Home | New Git URL |
Motivation
In a multi-journal bookie, CheckpointSourceList builds an aggregate
checkpoint by sampling journals one at a time. The sampling is not an
atomic snapshot, so a periodic SyncThread checkpoint can interleave
with a DbLedgerStorage cache-pressure flush:
at position 1, producing [2, 1].
The two checkpoints are incomparable because neither covers all state
represented by the other. However, the current lexicographic comparison
treats [2, 1] as later than [1, 2]. DbLedgerStorage can therefore skip
the flush required for [1, 2].
SyncThread can still mark [1, 2] as complete, allowing the journal
checkpoint and cleanup position to advance while entries covered by the
second journal remain only in the write cache. If the bookie crashes
before a later flush, those entries may no longer be replayed during
recovery, resulting in potential data loss.
This requires multiple journals and overlapping checkpoint sampling.
Single-journal checkpoints are not affected.
Changes
Tests