fjall
fjall copied to clipboard
Serializable Snapshot Isolation (SSI)
This allows multiple concurrent write transactions.
Checklist
- [x] Change MSRV back to 1.74
- [x] Uncomment
unwrap_usedlint - [x] Remove #[inline] attributes
- [x] Keep the option to use the single-writer transaction type
- [x] Remove dependency on
wmark(copy just the necessary parts into here), or maybe extract SnapshotTracker into a generic Watermark (probably needs a rewrite) - [x] Increment snapshot tracker watermark, so that old MVCC versions can be freed
- [x] Verify that TxPartition does not create a cyclic Arc to TxKeyspace
- [x] Clean up unused, commented code
- [x] Look at TODO comments in write_tx
- [x] More tests (ranges, prefix, fetch_update, update_fetch, etc.)
- [x] Make sure memory usage has an upper bound (stuff is getting GC'ed in the transaction manager)
- [x] Make CI pass
- [x] Think about lifetime on Transaction (dangling iter)
- [x] Benchmarks (WriteSet::insert was marked as SLOW function... cannot be sped up by SSI tx...)