Hi all,
I'm currently in a process of rewriting Tendermint tests to use Jepsen 0.2 https://github.com/tendermint/jepsen.
At the moment, I'm struggling to figure out how to make `(independent/checker (checker/set))` work. Is there an example somewhere?
It sounds like the problem here isn't with the checker, but
perhaps with the generator?
where deref-gen is an old way to construct a delayed generator.
(defn deref-gen"Sometimes you need to build a generator not *now*, but *later*; e.g. becauseit depends on state that won't be available until the generator is actuallyinvoked. Wrap a derefable returning a generator in this, and it'll be deref'edonly when asked for ops."[dgen](reify gen/Generator(op [this test process](gen/op @dgen test process))))
This results in java.lang.StackOverflowError: null exception.
I'm not quite sure what to make of this stacktrace--it looks like
it's something in pretty-printing, but I'm not sure what's being
printed. The full trace might be helpful. I imagine that if you're
using this implementation of deref-gen, it might be something to
do with that--the entire generator protocol was redesigned in
0.2.x, which I imagine has something to do with why this test is
exploding. See the changelog in 0.1.19 and 0.2.0 for details, and
jepsen.generator's docstring for detailed migration instructions.
Replacing deref-gen should, I think, be straightforward. I don't recall exactly how/why I wrote this part of the tendermint test, but I think you might try either a.) (delay @dgen) or b.) (fn [test context] @dgen) as a generator. Either should work, since Delay implements the Generator protocol directly (https://github.com/jepsen-io/jepsen/blob/main/jepsen/src/jepsen/generator.clj#L569), as do functions, and both can now return generators, rather than individual operations.
--Kyle