jepsen-io / jepsen

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

DEPRECATED Cheker when transitioning from Jepsen 0.1.10 to Jepsen 0.1.13 #449

Closed Tsunaou closed 4 years ago

Tsunaou commented 4 years ago

I want to make full use of the Jepsen so I tried to transitioning the mongodb test codes from Jepsen 0.1.10 to Jepsen 0.1.13 or more higher versions.

At first , I met the ERROR :

2020-03-09 22:33:32,842{GMT}    WARN    [main] jepsen.core: Test crashed!
java.lang.AbstractMethodError: jepsen.independent$checker$reify__852.check(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    at jepsen.checker$check_safe.invokeStatic(checker.clj:84) ~[jepsen-0.1.13.jar:na]
    at jepsen.checker$check_safe.invoke(checker.clj:77) ~[jepsen-0.1.13.jar:na]
    at jepsen.checker$check_safe.invokeStatic(checker.clj:82) ~[jepsen-0.1.13.jar:na]
    at jepsen.checker$check_safe.invoke(checker.clj:77) ~[jepsen-0.1.13.jar:na]
    at jepsen.core$analyze_BANG_.invokeStatic(core.clj:445) ~[jepsen-0.1.13.jar:na]
    at jepsen.core$analyze_BANG_.invoke(core.clj:434) ~[jepsen-0.1.13.jar:na]
    at jepsen.core$run_BANG_$fn__5703.invoke(core.clj:564) ~[jepsen-0.1.13.jar:na]
    at jepsen.core$run_BANG_.invokeStatic(core.clj:538) [jepsen-0.1.13.jar:na]
    at jepsen.core$run_BANG_.invoke(core.clj:467) [jepsen-0.1.13.jar:na]
    at jepsen.cli$single_test_cmd$fn__6411.invoke(cli.clj:362) [jepsen-0.1.13.jar:na]
    at jepsen.cli$run_BANG_.invokeStatic(cli.clj:299) [jepsen-0.1.13.jar:na]
    at jepsen.cli$run_BANG_.invoke(cli.clj:229) [jepsen-0.1.13.jar:na]
    at jepsen.mongodb.runner$_main.invokeStatic(runner.clj:193) [classes/:na]
    at jepsen.mongodb.runner$_main.doInvoke(runner.clj:191) [classes/:na]
    at clojure.lang.RestFn.invoke(RestFn.java:1789) [clojure-1.10.0.jar:na]
    at clojure.lang.Var.invoke(Var.java:543) [clojure-1.10.0.jar:na]
    at user$eval173.invokeStatic(form-init8333595295577796734.clj:1) [na:na]
    at user$eval173.invoke(form-init8333595295577796734.clj:1) [na:na]
    at clojure.lang.Compiler.eval(Compiler.java:7176) [clojure-1.10.0.jar:na]
    at clojure.lang.Compiler.eval(Compiler.java:7166) [clojure-1.10.0.jar:na]
    at clojure.lang.Compiler.load(Compiler.java:7635) [clojure-1.10.0.jar:na]
    at clojure.lang.Compiler.loadFile(Compiler.java:7573) [clojure-1.10.0.jar:na]
    at clojure.main$load_script.invokeStatic(main.clj:452) [clojure-1.10.0.jar:na]
    at clojure.main$init_opt.invokeStatic(main.clj:454) [clojure-1.10.0.jar:na]
    at clojure.main$init_opt.invoke(main.clj:454) [clojure-1.10.0.jar:na]
    at clojure.main$initialize.invokeStatic(main.clj:485) [clojure-1.10.0.jar:na]
    at clojure.main$script_opt.invokeStatic(main.clj:510) [clojure-1.10.0.jar:na]
    at clojure.main$script_opt.invoke(main.clj:507) [clojure-1.10.0.jar:na]
    at clojure.main$main.invokeStatic(main.clj:598) [clojure-1.10.0.jar:na]
    at clojure.main$main.doInvoke(main.clj:561) [clojure-1.10.0.jar:na]
    at clojure.lang.RestFn.applyTo(RestFn.java:137) [clojure-1.10.0.jar:na]
    at clojure.lang.Var.applyTo(Var.java:705) [clojure-1.10.0.jar:na]
    at clojure.main.main(main.java:37) [clojure-1.10.0.jar:na]

I noticed the WARNING that

DEPRECATED: Checker model is assigned to test, which is no longer supported. If the checker still needs a model, see `jepsen.checker` documentation for details.

Ohhhh, it seems that I should modified the code of checker. What I use is the jepsen.tests.caual.checker, so I copied the latest version. Now, Checker implement the 4-arity check method without model and provide it at construction. It's strange that there are still {:model CausalRegister} in the [test] when it comes in jepsen.core.run!, so I dissoc :model

    (core/mongodb-test
     "causal-register"
     (merge
      opts
      (dissoc (causal/test opts) :model)                                    
      (dissoc {:concurrency (count (:nodes opts))
               :client (causal-client opts)
               :nemesis (nemesis/partition-random-halves)
               :os debian/os
               :db (db (:clock opts)                               
                       (:tarball opts)
                       {:mongos-sem  mongos-sem
                        :chunk-size  (:chunk-size opts)
                        :shard-count (:shard-count opts)})} :model)))))

However, the same ERROR happen. I found there is {Keyword@8007} ":model" ->{NoOp@8008}knossos.model.NoOp@0. but I can't figure out why this happen.

Is there are some cache? Could you give me some advice about this?

Looking forward to your early reply. Thank you very much. Young

Tsunaou commented 4 years ago

Oh.. my fault. I deleted the target dictionary in IDEA and I found it's the cache I complied before make error.