Rust implementation of TAPIR
- Safe,
async
Rust - IR
- Unlogged
- Inconsistent
- Consensus
- View changes
- Recovery
- Membership change
- Real network transport
- TAPIR
- Get
- Put
- Prepare
- Commit
- Abort
- Optional linearizability
- IR sync & merge
- Prepare retries
- Coordinator recovery
- Sharding
- Persistent storage (e.g.
sled
) - Snapshot read
- Planned extensions
- Delete key operation
- Garbage collection
- Range scan
- Automatic shard balancing
- Disaster recovery
- Testing
- IR lock server (very simple)
- TAPIR-KV (simple)
- TAPIR-KV (maelstrom)
- Exhaustive state enumeration
- Optimizations
- Reduce
clone
- Reduce allocations
- Reduce temporary unavailability
- Reduce
Thanks to James Wilcox for assigning TAPIR as a reading.
Thanks to the TAPIR authors for answering questions about the paper!
Thanks to Kyle at Jepsen for clarifying the relative strength of isolation levels.