tsoracle-paxos-toolkit 0.2.1

Reusable OmniPaxos glue: RocksDB storage, lifecycle helpers, test fakes
docs.rs failed to build tsoracle-paxos-toolkit-0.2.1
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

tsoracle-paxos-toolkit

Reusable glue for building services on top of OmniPaxos.

What's in the box

  • declare_omnipaxos_types_ext! — wraps the upstream OmniPaxos type declarations with curated defaults so consumers supply only the slots that actually vary (entry type, application data).
  • RocksdbStorage<T> — generic omnipaxos::storage::Storage implementation backed by RocksDB. Passes OmniPaxos's bundled storage conformance suite; T: omnipaxos::storage::Entry is the host's log entry type.
  • Lifecycle helpers: PaxosRunner<T, S> (the tick task + apply task lifecycle wrapper), the MessageSink<T> outbound trait, LeadershipState, the leader-event stream (LeaderEventStream + LeaderEventSender), and the Peer struct used for follower-redirect endpoints.
  • Test fakes (feature-gated): MemNetwork<T> for in-process clusters, PartitionController for chaos coverage, MemStorage<T> for storage-free smoke tests.
  • Wire codec: encode / decode helpers using a [version_byte | postcard(payload)] framing, suitable for both paxos RPCs and storage records.

Feature flags

  • rocksdb-storage (default) — pulls in rocksdb and exposes RocksdbStorage. Disable if you bring your own storage backend.
  • test-fakes — exposes in-memory test fixtures (MemNetwork, MemStorage, PartitionController) for downstream conformance suites and chaos harnesses. Off by default.
  • failpoints — enables fail crate integration so the toolkit's instrumented sites can be driven from chaos tests. Off by default.

Out of scope (today)

The toolkit deliberately stops short of shipping:

  • A Network implementation. Single-group services can roll their own with the codec helpers; multi-group routing belongs in the host runtime that owns the cluster lifecycle.
  • A snapshot-streaming transport. Filesystem-backed sidecar transports are opinionated enough that lifting one would constrain its callers.
  • Multi-group host orchestration. Hosting N omnipaxos instances per process is a deployment-shaped concern, not a library concern.

These may move into the toolkit when a clear shared shape emerges.