v0.3.6
This is a sizeable release. It includes a significant correctness bugfix for a rare condition that could make operations in the history print with the wrong data. It also adds a new namespace for composing databases, nemeses, and generators when working with systems where each node has a different role. Kafka-style tests gain new powers and are significantly faster. And we have the usual slew of small bugfixes, dependency bumps, and quality-of-life improvements. Happy testing!
Bugfixes
generator/fill-in-map
no longer generates Ops with duplicate fields in their record extmaps. This fixes a rare bug where operations which used extra fields could wind up with two different values for (e.g.)(:value op)
vs(pprint op)
. It should also improve speed and size on disk.checker.perf/with-range
: fix a bug causing plots with zero data points to convert the plot to a string. This was expensive if the plot is large, and caused very confusing error messages. We now provide a short string message instead.net/iptables
now handles the new error message fromtc qdisc
when callingnet/fast!
API Changes
control/exec
will now throw a:nonzero-exit
error when an exit status code isnil
. Yes, this is apparently a thing that's possible.generator.test/with-fixed-rand-nth
has been replaced bywith-fixed-rands
, which controls rand, rand-int, and rand-nth.tests/kafka
: failed and info operations are now assumed to roll back consumer positions, rather than advancing them.tests/kafka
: emit subscribe/assign ops only 1:64 ops, rather than 1:8. Now tunable via(:sub-p test)
.
New Features
- A new namespace,
jepsen.role
, supports systems where different nodes run different software. db/map-test
wraps a DB in another which alters the test map. Helpful for composing DBs together which expect different things from their test maps.generator/each-process
: likeeach-thread
, this facets an underlying generator into a distinct one for each process.tests/kafka
checks for transactions which read their own writes prior to commit.
Minor Changes
os/centos
now uses dpkg 1.19.8control.net/ip*
now prefers v4 addressescontrol/on-nodes
no longer spawns a future when given a single node--slightly more efficient.- SSHJ now falls back to other auth methods after an AgentProxyException
generator/map
andf-map
now returnnil
when given anil
generator, which simplifies some before-run checks.generator.test/default-test
now includes a pair of:nodes
, for generators that use nodeschecker/check-safe
now writes exceptions as data to the:error
field of the results, rather than an unreadable string stacktracetests.kafka
now detects all duplicates even when given inconsistent offsets. It's nice to have both, it turns out.tests/kafka
includes an:unseen
key in poll operations to help operators track how far behind we aretests/kafka
: new tests for the checker & generatortests/kafka
: duplicate errors now include specific offsetstests/kafka
: inconsistent-offsets errors now emit sorted sets, for readabilitytests/kafka
is roughly 8x faster now, thanks to a slew of performance improvementstests/kafka
also ignores the new cycle-exists variants of G0, G1c, etc.- Jepsen's internal tests log less noise now
- Clojure 1.12.0
- tools.logging 1.3.0
- tools.cli 1.1.230
- unilog 0.7.32
- elle 0.2.2
- http-kit 2.8.0
- ring 1.12.2
- sshj 0.39.0
- data.codec 0.2.0
- data.fressian 1.1.0
Full Changelog: v0.3.5...v0.3.6