/tapi-rs

Rust implementation of TAPIR

Primary LanguageRustMIT LicenseMIT

tapi-rs

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

Acknowledgements

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.