jepsen icon indicating copy to clipboard operation
jepsen copied to clipboard

java.util.concurrent.ExecutionException: java.io.IOException: Cannot run program "dot": error=2, No such file or directory

Open winddd opened this issue 4 years ago • 6 comments

I am trying to run the stolon test and it can complete all the read and append transactions. But during analyzing period, one problem occurs. Here is the stack trace:

2020-07-08 16:02:33,588{GMT}	INFO	[jepsen test runner] jepsen.core: Run complete, writing
2020-07-08 16:02:34,670{GMT}	INFO	[jepsen test runner] jepsen.core: Analyzing...
2020-07-08 16:02:35,500{GMT}	WARN	[clojure-agent-send-off-pool-47] jepsen.checker: Error while checking history:
java.util.concurrent.ExecutionException: java.io.IOException: Cannot run program "dot": error=2, No such file or directory
	at java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.util.concurrent.FutureTask.get(FutureTask.java:192)
	at clojure.core$deref_future.invokeStatic(core.clj:2300)
	at clojure.core$future_call$reify__8439.deref(core.clj:6974)
	at clojure.core$deref.invokeStatic(core.clj:2320)
	at clojure.core$deref.invoke(core.clj:2306)
	at clojure.core$map$fn__5851.invoke(core.clj:2755)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:58)
	at clojure.lang.RT.seq(RT.java:531)
	at clojure.core$seq__5387.invokeStatic(core.clj:137)
	at clojure.core$dorun.invokeStatic(core.clj:3133)
	at clojure.core$dorun.invoke(core.clj:3133)
	at elle.viz$plot_analysis_BANG_.invokeStatic(viz.clj:203)
	at elle.viz$plot_analysis_BANG_.invoke(viz.clj:188)
	at elle.txn$cycles_BANG_.invokeStatic(txn.clj:514)
	at elle.txn$cycles_BANG_.invoke(txn.clj:495)
	at elle.list_append$check.invokeStatic(list_append.clj:777)
	at elle.list_append$check.invoke(list_append.clj:739)
	at jepsen.tests.cycle.append$checker$reify__1759.check(append.clj:19)
	at jepsen.checker$check_safe.invokeStatic(checker.clj:78)
	at jepsen.checker$check_safe.invoke(checker.clj:71)
	at jepsen.checker$compose$reify__8566$fn__8568.invoke(checker.clj:94)
	at clojure.core$pmap$fn__8447$fn__8448.invoke(core.clj:7022)
	at clojure.core$binding_conveyor_fn$fn__5739.invoke(core.clj:2030)
	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)
Caused by: java.io.IOException: Cannot run program "dot": error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at java.lang.Runtime.exec(Runtime.java:620)
	at clojure.java.shell$sh.invokeStatic(shell.clj:113)
	at clojure.java.shell$sh.doInvoke(shell.clj:79)
	at clojure.lang.RestFn.invoke(RestFn.java:457)
	at rhizome.viz$dot__GT_svg.invokeStatic(viz.clj:130)
	at rhizome.viz$dot__GT_svg.invoke(viz.clj:126)
	at elle.viz$save_dot_BANG_.invokeStatic(viz.clj:186)
	at elle.viz$save_dot_BANG_.invoke(viz.clj:176)
	at elle.viz$plot_analysis_BANG_$fn__1293.invoke(viz.clj:209)
	... 7 common frames omitted
Caused by: java.io.IOException: error=2, No such file or directory
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	... 16 common frames omitted
2020-07-08 16:02:35,507{GMT}	INFO	[jepsen test runner] jepsen.core: Analysis complete

OS of control node: Debian 9.
OS of db node: Debian 10. gnuplot version: gnuplot 5.0 patchlevel 5.

winddd avatar Jul 08 '20 16:07 winddd

Like the error message says, you don't have dot installed--you'll need graphviz for Jepsen to render the anomalies.

aphyr avatar Jul 08 '20 16:07 aphyr

wow, I didn't realize that dot is a library. Thank you!

winddd avatar Jul 08 '20 16:07 winddd

In your defense, the documentation for this is basically nonexistent! That's on me, sorry!

aphyr avatar Jul 08 '20 16:07 aphyr

In your defense, the documentation for this is basically nonexistent! That's on me, sorry!

I have successfully reproduced the phenomenon of G2-item after several days' try. I am so excited! Thanks a lot for your help!

winddd avatar Jul 08 '20 16:07 winddd

In your defense, the documentation for this is basically nonexistent! That's on me, sorry!

ah, I learnt the Jepsen from the etcd tutorial and it is based on the old version(may be before 0.18.0). It seems that Jepsen underwent a big refactoring/update after that. By the way, wish to see the updated tutorial for the redesigned Jepsen if possible.

winddd avatar Jul 08 '20 16:07 winddd

Yeah, that would be great. I'm... still trying to summon up the wherewithal to write any kind of code this week; when I get a free 10 hours or so I'll go through the tutorial again.

aphyr avatar Jul 08 '20 16:07 aphyr