jepsen.tests.causal-reverse

Checks for a strict serializability anomaly in which T1 < T2, but T2 is visible without T1.

We perform concurrent blind inserts across n keys, and meanwhile, perform reads of n keys in a transaction. To verify, we replay the history, tracking the writes which were known to have completed before the invocation of any write w_i. If w_i is visible, and some w_j < w_i is not visible, we’ve found a violation of strict serializability.

Splits keys up onto different tables to make sure they fall in different shard ranges

checker

(checker)

Takes a history of writes and reads. Verifies that subquent writes do not appear without prior acknowledged writes.

errors

(errors history expected)

Takes a history and an expected graph of write precedence, returning ops that violate the expected write order.

graph

(graph history)

Takes a history and returns a first-order write precedence graph.

r

(r)

w

(w k)

workload

(workload opts)

A package of a generator and checker. Options:

:nodes A set of nodes you’re going to operate on. We only care about the count, so we can figure out how many workers to use per key. :per-key-limit Maximum number of ops per key. Default 500.