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