wal-thread-safety-stranded-by-callers

Status: IN

The WAL carefully serializes all mutations (append, append_batch, checkpoint, truncate) under a threading.Lock, but both callers that depend on it have no synchronization for their own shared state: the LSM tree mutates _memtable, _sstables, and _immutable_memtables without any locking or atomic swaps, and _sstables specifically is mutated by both flush (append) and compact (full replacement) concurrently — the lock protects the log but not the data structures built from it.

Justifications

WAL's threading.Lock is the only concurrency protection in the storage stack, but it guards the wrong layer — callers that depend on WAL durability have no protection for their own shared state

Depends on (SL): wal-all-mutations-under-lock, lsm-no-synchronization, lsm-sstables-unprotected-mutation

JSON