Skip to content
Snippets Groups Projects

fix: bug in raft snapshot application

Merged Georgy Moshkin requested to merge gmoshkin/raft-msg-reject-term-0 into master
All threads resolved!
Compare changes
  • Side-by-side
  • Inline
Files
3
  • 87f169a0
    fix: bug in raft snapshot application · 87f169a0
    Georgy Moshkin authored
    There was a hard-to-reproduce bug in our snapshot application code.
    We always compact the raft log before applying the snapshot, because
    the snapshot replaces the entries and some of the logic in raft-rs
    seems to rely on this. The problem was, that our compact_log function
    would not remove any unapplied entries, which makes sense for compaction
    triggered automatically by raft log size, but doesn't make sense for
    raft snapshot, as the snapshot contains the state corresponding to the
    newer entries. The fix is simple: don't guard from unapplied entry
    compaction in case the compaction is for raft snapshot.
    
    We don't add any regression tests for this, because the implementation
    would be too difficult and would need us to pollute the code with error
    injection logic, which is not a worthy trade off in this case. But also
    the logic will still be tested, because this bug was responsible for a
    large amount of flaky tests, so we should see a significant reduction in
    flakiness from now on in tests concerning raft snapshots.
Loading