Bug#990872: puppetdb.jar crashes out of the box with clojure classpath error
Had a look at similar failures today and I fixed the way libcore-async-clojure exports its classpath [1]. This should _at least_ fix the need for adding tools.analyzer.jar and tools.analyzer.jvm.jar manually to the classpath. I'd be curious to know how that changed things for puppetdb! (maybe this bug is fixed?) [1]: https://tracker.debian.org/news/1324649/accepted-core-async-clojure-13610-5-source-into-unstable/ -- ⢀⣴⠾⠻⢶⣦⠀ ⣾⠁⢠⠒⠀⣿⡁ Louis-Philippe Véronneau ⢿⡄⠘⠷⠚⠋ po...@debian.org / veronneau.org ⠈⠳⣄
Bug#990872: puppetdb.jar crashes out of the box with clojure classpath error
Hello, When upgrading to bullseye, I ran into this bug aswell. Following up on Gabriel's hint of including extra jar's in the classpath, I eventually got puppetdb running with the following argument: -cp /usr/share/puppetdb/puppetdb.jar:/usr/share/java/tools.analyzer.jar:/usr/share/java/tools.analyzer.jvm.jar:/usr/share/java/httpcore-nio.jar:/usr/share/java/trapperkeeper-scheduler.jar:/usr/share/java/quartz2.jar I guess there's a cleaner way to fix the issue, but I'm also not particularly familiar with java and clojure. Hope this helps! Cheers, groente
Bug#990872: puppetdb.jar crashes out of the box with clojure classpath error
On Sat, 10 Jul 2021 14:08:00 -0400 =?UTF-8?Q?Louis-Philippe_V=c3=a9ronneau?= wrote: > On Fri, 09 Jul 2021 23:14:22 -0700 "Gabriel G. Rosa" > wrote: > > Package: puppetdb > > Version: 6.2.0-5 > > Severity: grave > > Justification: renders package unusable > > > > Dear Maintainer, > > > > When installing puppetdb and configuring it to listen on http port, the > > puppetdb.jar crashes with the following lines in syslog: > > > > Jul 9 23:01:46 puppet java[25194]: Syntax error (FileNotFoundException) > > compiling at (clojure/core/async/impl/ioc_macros.clj:1:1). > > Jul 9 23:01:46 puppet java[25194]: Could not locate > > clojure/tools/analyzer__init.class, clojure/tools/analyzer.clj or > > clojure/tools/analyzer.cljc on classpath. > > Jul 9 23:01:46 puppet java[25194]: Full report at: > > Jul 9 23:01:46 puppet java[25194]: /tmp/clojure-1064777479875377538.edn > > I've seen that error elsewhere while running clojure testsuites for > packages depending on libcore-async-clojure [1] and never got to debug it... > > I've just re-built libcore-async-clojure and libtools-analyzer-clojure > locally and their full testsuites passes though. > > I've also checked, and libtools-analyzer-clojure does ship the right jar > files: > > usr/ > └── share > ├── doc > │ └── libtools-analyzer-clojure > │ ├── changelog.Debian.gz > │ ├── changelog.gz > │ ├── CONTRIBUTING.md > │ ├── copyright > │ └── README.md.gz > ├── java > │ ├── tools.analyzer-1.0.0.jar > │ └── tools.analyzer.jar -> tools.analyzer-1.0.0.jar > └── maven-repo > └── org > └── clojure > └── tools.analyzer > ├── 1.0.0 > │ ├── tools.analyzer-1.0.0.jar > │ └── tools.analyzer-1.0.0.pom > └── debian > ├── tools.analyzer-debian.jar -> > ../1.0.0/tools.analyzer-1.0.0.jar > └── tools.analyzer-debian.pom > > Those jars do contain the right clojure files too... > > clojure/ > └── tools > ├── analyzer > │ ├── ast > │ │ └── query.clj > │ ├── ast.clj > │ ├── env.clj > │ ├── passes So if I include a few extra jars in the command line, it gets me a little further: grosa@puppet:~$ sudo /usr/bin/java -Xmx192m -Djava.security.egd=/dev/urandom -XX:OnOutOfMemoryError="kill -9 %p" -cp /usr/share/puppetdb/puppetdb.jar:/usr/share/java/tools.analyzer.jar:/usr/share/java/tools.analyzer.jvm.jar clojure.main -m puppetlabs.puppetdb.core services --config /etc/puppetdb/conf.d --bootstrap-config /etc/puppetdb/bootstrap.cfg --restart-file /run/puppetdb/restart Syntax error (ClassNotFoundException) compiling . at (puppetlabs/http/client/async.clj:60:5). org.apache.http.nio.protocol.HttpAsyncResponseConsumer Full report at: /tmp/clojure-11985391683440035019.edn clojure-11985391683440035019.edn Description: Binary data But still not at a working puppetdb http listener… Sorry I am fumbling in the dark a bit — I am not at all familiar with java and clojure. Should I be filing a bug report against a different package? Thanks, -G
Bug#990872: puppetdb.jar crashes out of the box with clojure classpath error
On Fri, 09 Jul 2021 23:14:22 -0700 "Gabriel G. Rosa" wrote: > Package: puppetdb > Version: 6.2.0-5 > Severity: grave > Justification: renders package unusable > > Dear Maintainer, > > When installing puppetdb and configuring it to listen on http port, the > puppetdb.jar crashes with the following lines in syslog: > > Jul 9 23:01:46 puppet java[25194]: Syntax error (FileNotFoundException) > compiling at (clojure/core/async/impl/ioc_macros.clj:1:1). > Jul 9 23:01:46 puppet java[25194]: Could not locate > clojure/tools/analyzer__init.class, clojure/tools/analyzer.clj or > clojure/tools/analyzer.cljc on classpath. > Jul 9 23:01:46 puppet java[25194]: Full report at: > Jul 9 23:01:46 puppet java[25194]: /tmp/clojure-1064777479875377538.edn I've seen that error elsewhere while running clojure testsuites for packages depending on libcore-async-clojure [1] and never got to debug it... I've just re-built libcore-async-clojure and libtools-analyzer-clojure locally and their full testsuites passes though. I've also checked, and libtools-analyzer-clojure does ship the right jar files: usr/ └── share ├── doc │ └── libtools-analyzer-clojure │ ├── changelog.Debian.gz │ ├── changelog.gz │ ├── CONTRIBUTING.md │ ├── copyright │ └── README.md.gz ├── java │ ├── tools.analyzer-1.0.0.jar │ └── tools.analyzer.jar -> tools.analyzer-1.0.0.jar └── maven-repo └── org └── clojure └── tools.analyzer ├── 1.0.0 │ ├── tools.analyzer-1.0.0.jar │ └── tools.analyzer-1.0.0.pom └── debian ├── tools.analyzer-debian.jar -> ../1.0.0/tools.analyzer-1.0.0.jar └── tools.analyzer-debian.pom Those jars do contain the right clojure files too... clojure/ └── tools ├── analyzer │ ├── ast │ │ └── query.clj │ ├── ast.clj │ ├── env.clj │ ├── passes │ │ ├── add_binding_atom.clj │ │ ├── cleanup.clj │ │ ├── collect_closed_overs.clj │ │ ├── constant_lifter.clj │ │ ├── elide_meta.clj │ │ ├── emit_form.clj │ │ ├── index_vector_nodes.clj │ │ ├── source_info.clj │ │ ├── trim.clj │ │ ├── uniquify.clj │ │ └── warn_earmuff.clj │ ├── passes.clj │ └── utils.clj └── analyzer.clj Although this package is built using the old "lets use `jar cf` to cram things in a jar manually" way instead of using leiningen directly and would certainly benefit in being migrated to it, I don't think this is a bug in puppetdb's packaging per say, but spawns from either one of those libs. Which one though... ¯\_(ツ)_/¯ [1]: https://salsa.debian.org/clojure-team/puppetlabs-ring-middleware-clojure/-/blob/debian/main/debian/tests/control#L5-7 -- ⢀⣴⠾⠻⢶⣦⠀ ⣾⠁⢠⠒⠀⣿⡁ Louis-Philippe Véronneau ⢿⡄⠘⠷⠚⠋ po...@debian.org / veronneau.org ⠈⠳⣄ OpenPGP_signature Description: OpenPGP digital signature
Bug#990872: puppetdb.jar crashes out of the box with clojure classpath error
Package: puppetdb Version: 6.2.0-5 Severity: grave Justification: renders package unusable Dear Maintainer, When installing puppetdb and configuring it to listen on http port, the puppetdb.jar crashes with the following lines in syslog: Jul 9 23:01:46 puppet java[25194]: Syntax error (FileNotFoundException) compiling at (clojure/core/async/impl/ioc_macros.clj:1:1). Jul 9 23:01:46 puppet java[25194]: Could not locate clojure/tools/analyzer__init.class, clojure/tools/analyzer.clj or clojure/tools/analyzer.cljc on classpath. Jul 9 23:01:46 puppet java[25194]: Full report at: Jul 9 23:01:46 puppet java[25194]: /tmp/clojure-1064777479875377538.edn Here's the full text of the dumpfile: {:clojure.main/message "Syntax error (FileNotFoundException) compiling at (clojure/core/async/impl/ioc_macros.clj:1:1).\nCould not locate clojure/tools/analyzer__init.class, clojure/tools/analyzer.clj or clojure/tools/analyzer.cljc on classpath.\n", :clojure.main/triage {:clojure.error/phase :compile-syntax-check, :clojure.error/line 1, :clojure.error/column 1, :clojure.error/source "ioc_macros.clj", :clojure.error/path "clojure/core/async/impl/ioc_macros.clj", :clojure.error/class java.io.FileNotFoundException, :clojure.error/cause "Could not locate clojure/tools/analyzer__init.class, clojure/tools/analyzer.clj or clojure/tools/analyzer.cljc on classpath."}, :clojure.main/trace {:via [{:type clojure.lang.Compiler$CompilerException, :message "Syntax error compiling at (clojure/core/async/impl/ioc_macros.clj:1:1).", :data {:clojure.error/phase :compile-syntax-check, :clojure.error/line 1, :clojure.error/column 1, :clojure.error/source "clojure/core/async/impl/ioc_macros.clj"}, :at [clojure.lang.Compiler load "Compiler.java" 7652]} {:type java.io.FileNotFoundException, :message "Could not locate clojure/tools/analyzer__init.class, clojure/tools/analyzer.clj or clojure/tools/analyzer.cljc on classpath.", :at [clojure.lang.RT load "RT.java" 462]}], :trace [[clojure.lang.RT load "RT.java" 462] [clojure.lang.RT load "RT.java" 424] [clojure.core$load$fn__6857 invoke "core.clj" 6115] [clojure.core$load invokeStatic "core.clj" 6114] [clojure.core$load doInvoke "core.clj" 6098] [clojure.lang.RestFn invoke "RestFn.java" 408] [clojure.core$load_one invokeStatic "core.clj" 5897] [clojure.core$load_one invoke "core.clj" 5892] [clojure.core$load_lib$fn__6797 invoke "core.clj" 5937] [clojure.core$load_lib invokeStatic "core.clj" 5936] [clojure.core$load_lib doInvoke "core.clj" 5917] [clojure.lang.RestFn applyTo "RestFn.java" 142] [clojure.core$apply invokeStatic "core.clj" 669] [clojure.core$load_libs invokeStatic "core.clj" 5974] [clojure.core$load_libs doInvoke "core.clj" 5958] [clojure.lang.RestFn applyTo "RestFn.java" 137] [clojure.core$apply invokeStatic "core.clj" 669] [clojure.core$require invokeStatic "core.clj" 5996] [clojure.core$require doInvoke "core.clj" 5996] [clojure.lang.RestFn invoke "RestFn.java" 930] [clojure.core.async.impl.ioc_macros$eval7174$loading__6738__auto7175 invoke "ioc_macros.clj" 12] [clojure.core.async.impl.ioc_macros$eval7174 invokeStatic "ioc_macros.clj" 12] [clojure.core.async.impl.ioc_macros$eval7174 invoke "ioc_macros.clj" 12] [clojure.lang.Compiler eval "Compiler.java" 7181] [clojure.lang.Compiler eval "Compiler.java" 7170] [clojure.lang.Compiler load "Compiler.java" 7640] [clojure.lang.RT loadResourceScript "RT.java" 381] [clojure.lang.RT loadResourceScript "RT.java" 372] [clojure.lang.RT load "RT.java" 459] [clojure.lang.RT load "RT.java" 424] [clojure.core$load$fn__6857 invoke "core.clj" 6115] [clojure.core$load invokeStatic "core.clj" 6114] [clojure.core$load doInvoke "core.clj" 6098] [clojure.lang.RestFn invoke "RestFn.java" 408] [clojure.core$load_one invokeStatic "core.clj" 5897] [clojure.core$load_one invoke "core.clj" 5892] [clojure.core$load_lib$fn__6797 invoke "core.clj" 5937] [clojure.core$load_lib invokeStatic "core.clj" 5936] [clojure.core$load_lib doInvoke "core.clj" 5917] [clojure.lang.RestFn applyTo "RestFn.java" 142] [clojure.core$apply invokeStatic "core.clj" 669] [clojure.core$load_libs invokeStatic "core.clj" 5974] [clojure.core$load_libs doInvoke "core.clj" 5958] [clojure.lang.RestFn applyTo "RestFn.java" 137] [clojure.core$apply invokeStatic "core.clj" 669] [clojure.core$require invokeStatic "core.clj" 5996] [clojure.core$require doInvoke "core.clj" 5996] [clojure.lang.RestFn invoke "RestFn.java" 619] [clojure.core.async$eval6541$loading__6738__auto6542 invoke "async.clj" 9] [clojure.core.async$eval6541 invokeStatic "async.clj" 9] [clojure.core.async$eval6541 invoke "async.clj" 9] [clojure.lang.Compiler eval "Compiler.java" 7181] [clojure.lang.Compiler eval "Compiler.java" 7170] [cloju