Jepsen 0.3.9

108 views
Skip to first unread message

Kyle Kingsbury

unread,
May 7, 2025, 9:52:13 AMMay 7
to anno...@jepsen.io
Good morning, software sadists!

I'm pleased to announce Jepsen 0.3.9 is now available. As usual, you'll
find releases on Clojars and GitHub:
https://github.com/jepsen-io/jepsen/releases/tag/v0.3.9

Full release notes follow:

A medium-sized release, this version makes several quality-of-life
improvements. We (finally!) download log files only once, rather than
twice at the end of a run; this should make multi-GB log downloads less
painful. A new namespace, `db.watchdog`, supports restarting flaky DBs
automatically. Generators are a little more sophisticated, and a little
easier to compose. Several error messages are nicer. Enjoy!

## Bugfixes

- Jepsen now downloads log files only once, rather than twice at the end
of a run
- nemesis.file: converts rational `:probability` values to floats,
rather than letting corrupt-file silently mis-parse the rational.

## API Changes

## New Features

- db.watchdog: automatically restarts DB nodes when they crash
- cli/without-defaults-for: strips defaults from option specifications.
This significantly streamlines using the same option spec for both
`test` and `test-all`.
- control.util/tarball!: creates a tarball of a directory. Particularly
helpful for downloading data dirs as a part of `db/log-files`.
- generator/map: functions can now take `(f op test context)` for more
control.
- generator/shortest-any: like `any`, but ends as soon as any single
generator does. Helpful when you have a fixed-length generator, and you
want to mix in some other operations, but don't know for how long.

## Minor Changes

- `lein test` now runs integration tests by default. I'm not entirely
sure about this one; will try it out and see.
- When downloading log files, Jepsen tries to kill all DB nodes first.
This reduces the chances of files shifting as we read them.
- generator: many constructors now pass through `nil` generators
intelligently, returning `nil` immediately. This makes it easier to
determine whether a generator will do anything before the test starts.
- nemesis/node-start-stopper: re-use existing SSH connections rather
than opening new ones
- reconnect/with-conn: throws if no connection is available. This is a
significantly clearer error message.
- Improved error messages for ex-infos thrown in generators and from a
test as a whole
- nemesis.file: returns [:io-error ...] instead of throwing on IO
errors. This cuts down on noise when trying to corrupt files the DB is
(e.g.) deleting out from under us.
- nemesis.combined: shorter printed representations for some generators
- Jepsen's interrupt handler logging has more informative log lines
- reconnect: fixed a docstring typo

## Dependencies

- elle 0.2.4
- jepsen.history 0.1.5
- knossos 0.3.12
- ring 1.14.1
- test.chuck 0.2.15

Happy testing!

--Kyle

Reply all
Reply to author
Forward
0 new messages