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-mapno 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/iptablesnow handles the new error message fromtc qdiscwhen callingnet/fast!
API Changes
control/execwill now throw a:nonzero-exiterror when an exit status code isnil. Yes, this is apparently a thing that's possible.generator.test/with-fixed-rand-nthhas 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-testwraps 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/kafkachecks for transactions which read their own writes prior to commit.
Minor Changes
os/centosnow uses dpkg 1.19.8control.net/ip*now prefers v4 addressescontrol/on-nodesno longer spawns a future when given a single node--slightly more efficient.- SSHJ now falls back to other auth methods after an AgentProxyException
generator/mapandf-mapnow returnnilwhen given anilgenerator, which simplifies some before-run checks.generator.test/default-testnow includes a pair of:nodes, for generators that use nodeschecker/check-safenow writes exceptions as data to the:errorfield of the results, rather than an unreadable string stacktracetests.kafkanow detects all duplicates even when given inconsistent offsets. It's nice to have both, it turns out.tests/kafkaincludes an:unseenkey 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/kafkais roughly 8x faster now, thanks to a slew of performance improvementstests/kafkaalso 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