Version 1.3.0 doesn't seem to play nicely with tools.namespace

Description

I recently bumped the tools.reader dep in `cider-nrepl` and this caused the following problem on `cider-jack-in`:

Oct 15, 2018 5:50:23 PM clojure.tools.logging$eval579$fn__582 invoke
SEVERE: Unhandled REPL handler exception processing message {:op init-debugger, rint-level 10, rint-length 10, :session cc619163-753b-46b1-9334-cf6e9459aac4, :id 8}
java.lang.ClassNotFoundException: clojure.tools.reader.reader_types.SourceLoggingPushbackReader, compilingcider/inlined_deps/toolsreader/v1v3v0/clojure/tools/reader.clj:1:1)
at clojure.lang.Compiler.load(Compiler.java:7526)
at clojure.lang.RT.loadResourceScript(RT.java:379)
at clojure.lang.RT.loadResourceScript(RT.java:370)
at clojure.lang.RT.load(RT.java:460)
at clojure.lang.RT.load(RT.java:426)
at clojure.core$load$fn__6548.invoke(core.clj:6046)
at clojure.core$load.invokeStatic(core.clj:6045)
at clojure.core$load.doInvoke(core.clj:6029)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5848)
at clojure.core$load_one.invoke(core.clj:5843)
at clojure.core$load_lib$fn__6493.invoke(core.clj:5888)
at clojure.core$load_lib.invokeStatic(core.clj:5887)
at clojure.core$load_lib.doInvoke(core.clj:5868)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$load_libs.invokeStatic(core.clj:5925)
at clojure.core$load_libs.doInvoke(core.clj:5909)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$require.invokeStatic(core.clj:5947)
at clojure.core$require.doInvoke(core.clj:5947)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at cider.inlined_deps.toolsnamespace.v0v3v0_alpha4.clojure.tools.namespace.parse$eval2867$loading_6434auto___2868.invoke(parse.cljc:9)
at cider.inlined_deps.toolsnamespace.v0v3v0_alpha4.clojure.tools.namespace.parse$eval2867.invokeStatic(parse.cljc:9)
at cider.inlined_deps.toolsnamespace.v0v3v0_alpha4.clojure.tools.namespace.parse$eval2867.invoke(parse.cljc:9)

... skipping some lines ...
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: clojure.tools.reader.reader_types.SourceLoggingPushbackReader
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java:69)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at clojure.lang.DynamicClassLoader.loadClass(DynamicClassLoader.java:77)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2204)
at clojure.lang.RT.classForNameNonLoading(RT.java:2217)
at cider.inlined_deps.toolsreader.v1v3v0.clojure.tools.reader$eval3532$loading_6434auto___3533.invoke(reader.clj:9)
at cider.inlined_deps.toolsreader.v1v3v0.clojure.tools.reader$eval3532.invokeStatic(reader.clj:9)
at cider.inlined_deps.toolsreader.v1v3v0.clojure.tools.reader$eval3532.invoke(reader.clj:9)
at clojure.lang.Compiler.eval(Compiler.java:7062)
at clojure.lang.Compiler.eval(Compiler.java:7051)
at clojure.lang.Compiler.load(Compiler.java:7514)
... more

Unfortunately tools.reader's changelog hasn't been updated in a while, so I'm not sure what recent change might have caused this.

Environment

None

Activity

Show:

Bozhidar BatsovOctober 16, 2018 at 9:02 AM

Thanks for the fast response!

Nicola MomettoOctober 16, 2018 at 8:37 AM

Hi, I've just updated the changelog to match the latest releases.

As for this issue, I reckon the change that introduced this issue in cider is https://github.com/clojure/tools.reader/commit/8c125101b30e66bf019ae66e228f1481ac26602f#diff-c18d0a09dfeefd43739ea3593cf209d2R25

The namespace declaration there is correct, requiring the namespace before importing the class, this looks like a tools.namespace issue whereby it doesn't know how to deal with this idiom, definitely not an issue on the tools.reader side

Bozhidar BatsovOctober 16, 2018 at 8:29 AM

I've also checked with 1.2.2 and everything works fine with it, so something must have changed recently.

Bozhidar BatsovOctober 16, 2018 at 8:07 AM

This might also be related to the way we're rewriting deps in cider-nrepl (using mranderson to avoid conflicts with user deps), but everything work just fine with older releases. Here's the commit in question https://github.com/clojure-emacs/cider-nrepl/commit/cded84d3ebddfcafe7fa013b39fa472afd1a576a

Declined

Details

Assignee

Reporter

Priority

Created October 16, 2018 at 8:06 AM
Updated October 16, 2018 at 9:02 AM
Resolved October 16, 2018 at 9:02 AM