jepsen-io / jepsen

A framework for distributed systems verification, with fault injection
6.68k stars 710 forks source link

java.lang.IllegalArgumentException: Cannot write jepsen.checker.timeline$html$reify__728@407b8435 as tag null #521

Closed ajdavis closed 2 years ago

ajdavis commented 2 years ago

I'm using Jepsen on a toy distributed system. If I enable an HTML timeline by uncommenting this line in my main Clojure file, I consistently see:

java.lang.IllegalArgumentException: Cannot write jepsen.checker.timeline$html$reify__728@407b8435 as tag null
    at org.fressian.handlers.WriteHandlerLookup.requireWriteHandler(WriteHandlerLookup.java:48)
    at org.fressian.FressianWriter.writeAs(FressianWriter.java:458)
    at org.fressian.FressianWriter.writeAs(FressianWriter.java:464)
    at org.fressian.FressianWriter.writeObject(FressianWriter.java:472)
    at org.fressian.FressianWriter.writeIterator(FressianWriter.java:152)
    at org.fressian.FressianWriter.writeList(FressianWriter.java:165)
    at org.fressian.impl.Handlers$32.write(Handlers.java:352)
    at org.fressian.FressianWriter.doWrite(FressianWriter.java:449)
    at org.fressian.FressianWriter.writeAs(FressianWriter.java:459)
    at org.fressian.FressianWriter.writeAs(FressianWriter.java:464)
    at org.fressian.FressianWriter.writeObject(FressianWriter.java:472)
    at clojure.data.fressian$write_object.invokeStatic(fressian.clj:219)
    at clojure.data.fressian$write_object.invoke(fressian.clj:216)
    at jepsen.store$write_fressian_BANG_.invokeStatic(store.clj:370)
    at jepsen.store$write_fressian_BANG_.invoke(store.clj:364)
    at jepsen.store$save_1_BANG_$fn__4651.invoke(store.clj:379)
    at clojure.core$binding_conveyor_fn$fn__5772.invoke(core.clj:2034)
    at clojure.lang.AFn.call(AFn.java:18)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
aphyr commented 2 years ago

You've placed :timeline at the top level of the test, rather than in your checker map.

ajdavis commented 2 years ago

Terrific, thanks.