trex-paxos / trex

Embeddable multi-Paxos For The JVM

Version Matrix

Build Status

Trex: An embeddable Paxos engine for the JVM

Checkout the blog posts for a description of this implementation of Paxos Made Simple. s


# Kick the tires
sbt clean test it:test
sbt coverageReport

See the .travis.yml for supported jdk and scala versions.


Create a release:

sbt> sonatypeDrop comgithubtrex-paxos-1029
sbt> publishSigned
sbt> sonatypeReleaseAll

Status / Work Plan

0.1 - library (released)

  • replace pickling
  • fix driver
  • is retransmission of accepted values actually safe?
  • overrideable send methods
  • fix the fixmes
  • extract a core functional library with no dependencies
  • breakup monolithic actor and increase unit test coverage
  • java demo

0.2 - Flexible paxos (FPaxos) hooks

  • pluggable quorum strategy in the library

0.3 - integrity

  • crc32 message integrity

0.4.0 - Remove Akka dependence from core (keep in tests)

  • expose more methods for new rsocket code

0.4.1 - Remove Akka dependence from core (keep in tests) #2

  • Unpickle byte[] for Java clients

0.5.0 - JPickle for Java Journal

0.a - practical

  • dynamic cluster membership with UPaxos

0.b - enhanced

  • learners / scale-out multicast
  • timeline reads
  • noop heartbeats (less duels and partitioned leader detection)
  • snapshots and out of band retransmission
  • metrics/akka-tracing
  • binary tracing
  • jumbo UDP packets
  • complete the TODOs

0.c - performance

  • strong reads
  • outdated reads
  • optimised journal
  • batching
  • remove remote actor from client driver
  • replica strong reads
  • compression
  • journal truncation by size
  • periodically leader number boosting


  • final API
  • hand-off reads?


  • transaction demo
  • ???


The TRex icon is Tyrannosaurus Rex by Raf Verbraeken from the Noun Project licensed under CC3.0