JEPSEN

Analyses

Jepsen started as a series of blog posts and conference talks before becoming a consultancy in 2016. Jepsen has analyzed dozens of databases, coordination services, and queues—revealing replica divergence, data loss, stale reads, read skew, lock conflicts, and much more. Below are the analyses published on jepsen.io.

SystemDateVersion
ParticleDB2026-10-311.1.4
Orkes Conductor2026-10-205.3.2
MariaDB Galera Cluster2026-03-1612.1.2
NATS2025-12-082.12.1
Capela2025-08-07dda5892
TigerBeetle2025-06-060.16.11
Amazon RDS for PostgreSQL2025-04-2917.4
Bufstream2024-11-120.1.0
jetcd2024-08-080.8.2
Datomic2024-05-151.0.7075
RavenDB2024-01-316.0.2
MySQL2023-12-198.0.34
Redpanda2022-04-2921.10.1
Radix DLT2022-02-051.0-beta.35.1
Scylla2020-12-234.2-rc3
Redis-Raft2020-06-231b3fbf6
PostgreSQL2020-06-1212.3
MongoDB2020-05-154.2.6
Dgraph2020-04-301.1.1
etcd2020-01-303.4.3
YugaByte DB2019-09-051.3.1
TiDB2019-06-122.1.7
YugaByte DB2019-03-261.1.9
FaunaDB2019-03-052.5.4
MongoDB2018-10-233.6.4
Dgraph2018-08-231.0.2
Aerospike2018-03-073.99.0.3
Hazelcast2017-10-063.8.3
Tendermint2017-09-050.10.2
CockroachDB2017-02-16beta-20160829
MongoDB2017-02-073.4.0‑rc3
VoltDB2016-07-126.3
RethinkDB2016-01-222.2.3
RethinkDB2016-01-042.1.5

Get Tested

You can hire Jepsen to analyze a database, queue, or other kind of system. Jepsen also offers training and consulting to help you build and extend your own tests.

Ethics

All public Jepsen analyses are performed in accordance with our ethics policy.

Techniques

Jepsen occupies a particular niche of the correctness testing landscape. We emphasize:

  • Opaque-box systems testing: we evaluate real binaries running on real clusters. This allows us to test systems without access to their source, and without requiring deep packet inspection, formal annotations, etc. Bugs reproduced in Jepsen are observable in production, not theoretical. However, we sacrifice some of the strengths of formal methods: tests are nondeterministic, and we cannot prove correctness, only find errors.

  • Testing under distributed systems failure modes: faulty networks, unsynchronized clocks, and partial failure. Many test suites only evaluate the behavior of healthy clusters, but production systems experience pathological failure modes. Jepsen shows behavior under strain.

  • Generative testing: we construct random operations, apply them to the system, and construct a concurrent history of their results. That history is checked against a model to establish its correctness. Generative (or property-based) tests often reveal edge cases with subtle combinations of inputs.