Skip to content

0.3.8

Latest
Compare
Choose a tag to compare
@aphyr aphyr released this 06 Mar 23:39
· 2 commits to main since this release

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 most n.
  • jepsen.web will try to shell out to the system's zip 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 in nemesis, where they're used by nemesis.file.
  • util/minority: like majority, computes just shy of half an integer
  • util/zipf: generates Zipfian-distributed integers
  • util/rand-distribution can generate Zipfians as well
  • os.debian now includes build-essential, rather than installing GCC on-demand
  • checker.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