The centerpiece of 0.3.8 is a new nemesis for corrupting files: jepsen.nemesis.file
. This nemesis can be scoped to specific regions of a file, is aware of chunk structure (e.g. database pages) and can be used to snapshot, restore, shuffle, and introduce bitflips in chunks stochastically. Its faults can also be scoped to specific nodes, or striped helically around a cluster. A big thank you to Ellen Marie Dash (@duckinator), who reviewed and contributed C expertise on this project.
You'll also find a handful of new utility functions, including a fast Zipfian PRNG, and a variety of bugfixes and improvements for clock skew nemeses.
Bugfixes
- SystemD took over clock management from NTP on newer Debian installs, and has its own way to disable clock sync. We now disable both NTP and systemd's time daemon.
nemesis/compose
offers better error messages when given an unknown:f
API Changes
nemesis.time
's bump operations used to generate lots of very small clock (e.g. 10 ms) adjustments, and only a few large ones. This made it hard to find errors with large (e.g. 10+ second) clock skew. We now have a higher chance of picking a large offset.
New Features
nemesis.file
: a new tool for injecting file corruption.generator/concurrency-limit
, which limits the number of threads executing ops from a given generator to at mostn
.jepsen.web
will try to shell out to the system'szip
command when building zip files. This can be noticeably faster than the built-in Java zip.
Minor Changes
nemesis.time
's C-compiling powers now live innemesis
, where they're used bynemesis.file
.util/minority
: likemajority
, computes just shy of half an integerutil/zipf
: generates Zipfian-distributed integersutil/rand-distribution
can generate Zipfians as wellos.debian
now includesbuild-essential
, rather than installing GCC on-demandchecker.perf
can now take configurable filenames for latency graphs, in case you want to spit out custom latency plots- Rate graphs now skip over empty values of
[:f :type]
- Knossos 0.3.11
- Ring 1.13.0
- Fipp 0.6.27
- Small documentation fixups