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
andtest-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, returningnil
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