Kyle Kingsbury
unread,Mar 6, 2025, 6:41:33 PMMar 6Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to anno...@jepsen.io
Friends, enemies, assembled indifferents,
I'm delighted to present Jepsen 0.3.8. You'll find it available on
Clojars and GitHub, as usual.
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
--Kyle