Fork me on GitHub
#aleph
<
2022-05-13
>
jjttjj18:05:02

https://github.com/clj-commons/aleph/issues/569 I'm getting this same error when I add jepsen (https://github.com/jepsen-io/jepsen/tree/main/jepsen) to my (deps.edn) project, even when I exclude byte-streams/manifold/aleph from the jepsen dep. Using latest versions of aleph (tried the snapshot and 0.4.7) and manifold. Any tips? Here's the deps tree it's showing below Jepsen.

jepsen/jepsen 0.2.6
  . org.clojure/data.fressian 1.0.0
  . org.clojure/tools.logging 1.2.4 :newer-version
  . org.clojure/tools.cli 1.0.206 :newer-version
  . spootnik/unilog 0.7.29
    . net.logstash.logback/logstash-logback-encoder 6.6
      . com.fasterxml.jackson.core/jackson-databind 2.12.0 :newer-version
        . com.fasterxml.jackson.core/jackson-annotations 2.12.0
        X com.fasterxml.jackson.core/jackson-core 2.12.0 :older-version
    . org.slf4j/slf4j-api 1.7.32
    . org.slf4j/log4j-over-slf4j 1.7.32
      . org.slf4j/slf4j-api 1.7.32
    . org.slf4j/jul-to-slf4j 1.7.32
      . org.slf4j/slf4j-api 1.7.32
    . org.slf4j/jcl-over-slf4j 1.7.32
      . org.slf4j/slf4j-api 1.7.32
    . ch.qos.logback/logback-classic 1.2.8
      . ch.qos.logback/logback-core 1.2.8
      . org.slf4j/slf4j-api 1.7.32
    . ch.qos.logback/logback-core 1.2.8
  . elle/elle 0.1.4
    . slingshot/slingshot 0.12.2
    . dom-top/dom-top 1.0.7
    X hiccup/hiccup 1.0.5 :older-version
    . knossos/knossos 0.3.8
    . org.clojure/tools.logging 1.2.4
    . rhizome/rhizome 0.2.9
    . jepsen.txn/jepsen.txn 0.1.2
    . io.lacuna/bifurcan 0.1.0
  . clj-time/clj-time 0.15.2
  . jepsen.txn/jepsen.txn 0.1.2
  . knossos/knossos 0.3.8
    . org.clojure/math.combinatorics 0.1.6
    . potemkin/potemkin 0.4.5
    . slingshot/slingshot 0.12.2
    . interval-metrics/interval-metrics 1.0.0
    . org.clojure/tools.cli 1.0.206
    . com.boundary/high-scale-lib 1.0.6
    . org.clojars.pallix/analemma 1.0.0
    X org.clojure/tools.logging 1.1.0 :older-version
    . metametadata/multiset 0.1.1
  . clj-ssh/clj-ssh 0.5.14
    X org.clojure/tools.logging 0.2.6 :older-version
    . com.jcraft/jsch.agentproxy.usocket-jna 0.0.9
      . com.jcraft/jsch.agentproxy.core 0.0.9
      X net.java.dev.jna/jna 4.1.0 :older-version
      X net.java.dev.jna/jna-platform 4.1.0 :superseded
        X net.java.dev.jna/jna 4.1.0 :parent-omitted
    . com.jcraft/jsch.agentproxy.usocket-nc 0.0.9
      . com.jcraft/jsch.agentproxy.core 0.0.9
    . com.jcraft/jsch.agentproxy.sshagent 0.0.9
      . com.jcraft/jsch.agentproxy.core 0.0.9
    . com.jcraft/jsch.agentproxy.pageant 0.0.9
      . com.jcraft/jsch.agentproxy.core 0.0.9
      X net.java.dev.jna/jna 4.1.0 :older-version
      . net.java.dev.jna/jna-platform 4.1.0
    . com.jcraft/jsch.agentproxy.core 0.0.9
    . com.jcraft/jsch.agentproxy.jsch 0.0.9
      X com.jcraft/jsch 0.1.49 :older-version
      . com.jcraft/jsch.agentproxy.core 0.0.9
    . com.jcraft/jsch 0.1.53
  . gnuplot/gnuplot 0.1.3
    X byte-streams/byte-streams 0.2.5-alpha2 :excluded
  . http-kit/http-kit 2.5.3
  . ring/ring 1.9.5
    . ring/ring-core 1.9.5 :newer-version
      . ring/ring-codec 1.1.3
        . commons-codec/commons-codec 1.15
      X commons-io/commons-io 2.10.0 :older-version
      . commons-fileupload/commons-fileupload 1.4
        X commons-io/commons-io 2.2 :older-version
      . crypto-random/crypto-random 1.2.1
        . commons-codec/commons-codec 1.15
      . crypto-equality/crypto-equality 1.0.0
    . ring/ring-devel 1.9.5
      . ring/ring-core 1.9.5
      X hiccup/hiccup 1.0.5 :older-version
      . clj-stacktrace/clj-stacktrace 0.2.8
      . ns-tracker/ns-tracker 0.4.0
        X org.clojure/tools.namespace 0.2.11 :older-version
        X org.clojure/java.classpath 0.3.0 :older-version
    . ring/ring-jetty-adapter 1.9.5
      . ring/ring-core 1.9.5
      . ring/ring-servlet 1.9.5
      . org.eclipse.jetty/jetty-server 9.4.44.v20210927
        . javax.servlet/javax.servlet-api 3.1.0
        . org.eclipse.jetty/jetty-http 9.4.44.v20210927
        . org.eclipse.jetty/jetty-io 9.4.44.v20210927
    . ring/ring-servlet 1.9.5
      . ring/ring-core 1.9.5
  X com.hierynomus/sshj 0.32.0 :use-top
  . com.jcraft/jsch.agentproxy.connector-factory 0.0.9
    . com.jcraft/jsch.agentproxy.core 0.0.9
    . com.jcraft/jsch.agentproxy.usocket-jna 0.0.9
    . com.jcraft/jsch.agentproxy.usocket-nc 0.0.9
    . com.jcraft/jsch.agentproxy.sshagent 0.0.9
    . com.jcraft/jsch.agentproxy.pageant 0.0.9
  . com.jcraft/jsch.agentproxy.sshj 0.0.9
    . com.jcraft/jsch.agentproxy.core 0.0.9
  . org.bouncycastle/bcprov-jdk15on 1.70
  X hiccup/hiccup 1.0.5 :older-version
  . metametadata/multiset 0.1.1
    . org.clojure/algo.generic 0.1.2
  . dom-top/dom-top 1.0.7
    X riddley/riddley 0.2.0 :excluded
  . slingshot/slingshot 0.12.2
  . org.clojure/data.codec 0.1.1
  . fipp/fipp 0.6.25
    . org.clojure/core.rrb-vector 0.1.2
  . io.lacuna/bifurcan 0.1.0

Matthew Davidson (kingmob)03:05:47

I'll take a look later/tomorrow, but off the top of my head, aleph shouldn't be involved, and using a more recent byte-streams should work…

jjttjj03:05:07

Thanks I can try to get a minimal reproduction this weekend, was just curious if it was anything obvious

Matthew Davidson (kingmob)11:05:42

@jjttjj OK, after a bit of digging, I found the issue. Jepsen is being deployed to Maven as an uberjar, which means it comes bundled with its own versions of byte-streams and manifold. If you check with clj -Spath, you can see it precedes the actual manifold dep in the classpath, making later specified lib jars irrelevant. I once debugged the same issue with Lein, and in that case, it handed off the deps to Maven, and got a set of jars. I don’t recall if Maven or Lein was at fault, but both effectively assume the jars’ classes were disjoint. I’m saddened/annoyed/unsurprised to see tools.deps have the same flaw. I’ll open an issue with aphyr, in case this isn’t intended behavior, and for you, maybe using a git coordinate, or downloading the jepsen code and using a local coordinate will work?

jjttjj12:05:04

@U10EC98F5 thank you so much for looking into that I really appreciate it! I was stumped

Matthew Davidson (kingmob)11:05:42
replied to a thread:https://github.com/clj-commons/aleph/issues/569 I'm getting this same error when I add jepsen (https://github.com/jepsen-io/jepsen/tree/main/jepsen) to my (deps.edn) project, even when I exclude byte-streams/manifold/aleph from the jepsen dep. Using latest versions of aleph (tried the snapshot and 0.4.7) and manifold. Any tips? Here's the deps tree it's showing below Jepsen. jepsen/jepsen 0.2.6 . org.clojure/data.fressian 1.0.0 . org.clojure/tools.logging 1.2.4 :newer-version . org.clojure/tools.cli 1.0.206 :newer-version . spootnik/unilog 0.7.29 . net.logstash.logback/logstash-logback-encoder 6.6 . com.fasterxml.jackson.core/jackson-databind 2.12.0 :newer-version . com.fasterxml.jackson.core/jackson-annotations 2.12.0 X com.fasterxml.jackson.core/jackson-core 2.12.0 :older-version . org.slf4j/slf4j-api 1.7.32 . org.slf4j/log4j-over-slf4j 1.7.32 . org.slf4j/slf4j-api 1.7.32 . org.slf4j/jul-to-slf4j 1.7.32 . org.slf4j/slf4j-api 1.7.32 . org.slf4j/jcl-over-slf4j 1.7.32 . org.slf4j/slf4j-api 1.7.32 . ch.qos.logback/logback-classic 1.2.8 . ch.qos.logback/logback-core 1.2.8 . org.slf4j/slf4j-api 1.7.32 . ch.qos.logback/logback-core 1.2.8 . elle/elle 0.1.4 . slingshot/slingshot 0.12.2 . dom-top/dom-top 1.0.7 X hiccup/hiccup 1.0.5 :older-version . knossos/knossos 0.3.8 . org.clojure/tools.logging 1.2.4 . rhizome/rhizome 0.2.9 . jepsen.txn/jepsen.txn 0.1.2 . io.lacuna/bifurcan 0.1.0 . clj-time/clj-time 0.15.2 . jepsen.txn/jepsen.txn 0.1.2 . knossos/knossos 0.3.8 . org.clojure/math.combinatorics 0.1.6 . potemkin/potemkin 0.4.5 . slingshot/slingshot 0.12.2 . interval-metrics/interval-metrics 1.0.0 . org.clojure/tools.cli 1.0.206 . com.boundary/high-scale-lib 1.0.6 . org.clojars.pallix/analemma 1.0.0 X org.clojure/tools.logging 1.1.0 :older-version . metametadata/multiset 0.1.1 . clj-ssh/clj-ssh 0.5.14 X org.clojure/tools.logging 0.2.6 :older-version . com.jcraft/jsch.agentproxy.usocket-jna 0.0.9 . com.jcraft/jsch.agentproxy.core 0.0.9 X net.java.dev.jna/jna 4.1.0 :older-version X net.java.dev.jna/jna-platform 4.1.0 :superseded X net.java.dev.jna/jna 4.1.0 :parent-omitted . com.jcraft/jsch.agentproxy.usocket-nc 0.0.9 . com.jcraft/jsch.agentproxy.core 0.0.9 . com.jcraft/jsch.agentproxy.sshagent 0.0.9 . com.jcraft/jsch.agentproxy.core 0.0.9 . com.jcraft/jsch.agentproxy.pageant 0.0.9 . com.jcraft/jsch.agentproxy.core 0.0.9 X net.java.dev.jna/jna 4.1.0 :older-version . net.java.dev.jna/jna-platform 4.1.0 . com.jcraft/jsch.agentproxy.core 0.0.9 . com.jcraft/jsch.agentproxy.jsch 0.0.9 X com.jcraft/jsch 0.1.49 :older-version . com.jcraft/jsch.agentproxy.core 0.0.9 . com.jcraft/jsch 0.1.53 . gnuplot/gnuplot 0.1.3 X byte-streams/byte-streams 0.2.5-alpha2 :excluded . http-kit/http-kit 2.5.3 . ring/ring 1.9.5 . ring/ring-core 1.9.5 :newer-version . ring/ring-codec 1.1.3 . commons-codec/commons-codec 1.15 X commons-io/commons-io 2.10.0 :older-version . commons-fileupload/commons-fileupload 1.4 X commons-io/commons-io 2.2 :older-version . crypto-random/crypto-random 1.2.1 . commons-codec/commons-codec 1.15 . crypto-equality/crypto-equality 1.0.0 . ring/ring-devel 1.9.5 . ring/ring-core 1.9.5 X hiccup/hiccup 1.0.5 :older-version . clj-stacktrace/clj-stacktrace 0.2.8 . ns-tracker/ns-tracker 0.4.0 X org.clojure/tools.namespace 0.2.11 :older-version X org.clojure/java.classpath 0.3.0 :older-version . ring/ring-jetty-adapter 1.9.5 . ring/ring-core 1.9.5 . ring/ring-servlet 1.9.5 . org.eclipse.jetty/jetty-server 9.4.44.v20210927 . javax.servlet/javax.servlet-api 3.1.0 . org.eclipse.jetty/jetty-http 9.4.44.v20210927 . org.eclipse.jetty/jetty-io 9.4.44.v20210927 . ring/ring-servlet 1.9.5 . ring/ring-core 1.9.5 X com.hierynomus/sshj 0.32.0 :use-top . com.jcraft/jsch.agentproxy.connector-factory 0.0.9 . com.jcraft/jsch.agentproxy.core 0.0.9 . com.jcraft/jsch.agentproxy.usocket-jna 0.0.9 . com.jcraft/jsch.agentproxy.usocket-nc 0.0.9 . com.jcraft/jsch.agentproxy.sshagent 0.0.9 . com.jcraft/jsch.agentproxy.pageant 0.0.9 . com.jcraft/jsch.agentproxy.sshj 0.0.9 . com.jcraft/jsch.agentproxy.core 0.0.9 . org.bouncycastle/bcprov-jdk15on 1.70 X hiccup/hiccup 1.0.5 :older-version . metametadata/multiset 0.1.1 . org.clojure/algo.generic 0.1.2 . dom-top/dom-top 1.0.7 X riddley/riddley 0.2.0 :excluded . slingshot/slingshot 0.12.2 . org.clojure/data.codec 0.1.1 . fipp/fipp 0.6.25 . org.clojure/core.rrb-vector 0.1.2 . io.lacuna/bifurcan 0.1.0

@jjttjj OK, after a bit of digging, I found the issue. Jepsen is being deployed to Maven as an uberjar, which means it comes bundled with its own versions of byte-streams and manifold. If you check with clj -Spath, you can see it precedes the actual manifold dep in the classpath, making later specified lib jars irrelevant. I once debugged the same issue with Lein, and in that case, it handed off the deps to Maven, and got a set of jars. I don’t recall if Maven or Lein was at fault, but both effectively assume the jars’ classes were disjoint. I’m saddened/annoyed/unsurprised to see tools.deps have the same flaw. I’ll open an issue with aphyr, in case this isn’t intended behavior, and for you, maybe using a git coordinate, or downloading the jepsen code and using a local coordinate will work?