Bug#990872: puppetdb.jar crashes out of the box with clojure classpath error

2022-05-13 Thread Louis-Philippe Véronneau
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

2021-09-11 Thread groente
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

2021-07-11 Thread Gabriel G. Rosa
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

2021-07-10 Thread Louis-Philippe Véronneau
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

2021-07-10 Thread Gabriel G. Rosa
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]