0.1.15
This is mostly an ergonomics & bugfix release, with a few new minor checkers. In particular, you may want to try the stats
and unhandled-exceptions
checkers, which can help you avoid issues where your test passes because every operation failed! We also track exceptions thrown by client operations, and can summarize them to tell you what kinds of exceptions you aren't catching. This can help make your tests more robust without endless scrolling through logs. We've added some retries for flaky SCP downloads, and made logged exceptions more useful in some places. Plus more!
Special thanks to Vojtech Juranek for JDK12 compatibility, and to everyone else who contributed patches and feedback. :)
New Features
- jepsen.checker/stats, jepsen.checker/unhandled-exceptions: some basic statistics and error reporting which can be applied to almost any test.
- jepsen.tests.cycle.append can now detect internal consistency violations within transactions.
API Changes
- jepsen.test.cycle.append now has a generator and a default test map which makes it easier to build append tests.
- When exceptions are thrown by Client/invoke!, we attach the exception (as clojure data) to the generated
:info
op under the:exception
key.
Minor Changes
- jepsen.control/download now retries some SCP failures. These have been traditionally flaky.
- Tests now log much less garbage to the console.
- jepsen.nemesis.time now stops the ntp service, in addition to ntpd, during setup.
- We're now compatible with JDK12.
- jepsen.tests.cycle.append doesn't generate empty transactions as a part of its workload.
- jepsen.reconnect now logs the full exception when a reconnectable error occurs.
Bugfixes
- Exceptions thrown in (e.g.) OS and DB setup could be propagated incorrectly as BrokenBarrierExceptions, which, while technically correct, didn't provide much useful information about what went wrong. We now make a special effort to provide useful exceptions.
- jepsen.control.util/grepkill now properly catches
no such process
errors, which could happen when racing to kill a process.