Summary
Implement double-buffering to allow concurrent memtable flush while writers continue to a new active memtable.
Motivation
Currently, seal() blocks all writes during the flush phase. Double-buffering would allow writers to continue to a new arena while the frozen memtable is being iterated/flushed.
Implementation Notes (from design doc)
If you wanted to support concurrent memtable flush while writers continue (double-buffering), you would need:
- Two arenas: active (writers) and frozen (being flushed)
- Writers atomically switch to the new arena
- The frozen arena is immutable — safe to iterate without synchronization
From design doc
See LOCKFREE_SKIPLIST_DESIGN.md lines 592-595
Priority: low
Summary
Implement double-buffering to allow concurrent memtable flush while writers continue to a new active memtable.
Motivation
Currently, seal() blocks all writes during the flush phase. Double-buffering would allow writers to continue to a new arena while the frozen memtable is being iterated/flushed.
Implementation Notes (from design doc)
If you wanted to support concurrent memtable flush while writers continue (double-buffering), you would need:
From design doc
See LOCKFREE_SKIPLIST_DESIGN.md lines 592-595
Priority: low