clojure-emacs / clj-refactor.el

A CIDER extension that provides powerful commands for refactoring Clojure code.
GNU General Public License v3.0
771 stars 111 forks source link

cljr-add-project-dependency throws `java.io.EOFException` #536

Closed mukundzare closed 1 year ago

mukundzare commented 1 year ago

Expected behavior

Calling cljr-add-project-dependency should present me with the list of project dependencies to add.

Actual behavior

Calling cljr-add-project-dependency throws a java.io.EOFException exception.

Steps to reproduce the problem

In any clojure buffer with cider active, call cljr-add-project-dependency.

Environment & Version information

clj-refactor.el version information

clj-refactor 3.6.0 (package: 20221023.1644), refactor-nrepl 3.6.0

CIDER version information

Include here the version string displayed when CIDER's REPL is launched. Here's an example:

;; CIDER 1.5.0 (Strasbourg), nREPL 1.0.0
;; Clojure 1.10.1, Java 17.0.5

Leiningen or Boot version

Leiningen 2.9.1 on Java 17.0.5 OpenJDK 64-Bit Server VM

Emacs version

GNU Emacs 28.2

Operating system

Ubuntu 20.04 LTS

vemv commented 1 year ago

Hi there!

Thanks for the report. I'd need the entire stacktrace in order to do something with it.

Cheers - V

rmuslimov commented 1 year ago

@vemv this is happening for me too, since I have updated version to latest yday. Here is stacktrace

cljr--get-error-value: Error in nrepl-refactor: java.util.concurrent.ExecutionException: java.io.EOFException: Unexpected end of ZLIB input stream
 at java.util.concurrent.FutureTask.report (FutureTask.java:122)
    java.util.concurrent.FutureTask.get (FutureTask.java:191)
    clojure.core$deref_future.invokeStatic (core.clj:2317)
    clojure.core$future_call$reify__8544.deref (core.clj:7041)
    clojure.core$deref.invokeStatic (core.clj:2337)
    clojure.core$deref.invoke (core.clj:2323)
    refactor_nrepl.artifacts$update_artifact_cache_BANG_.invokeStatic (artifacts.clj:134)
    refactor_nrepl.artifacts$update_artifact_cache_BANG_.invoke (artifacts.clj:130)
    refactor_nrepl.artifacts$artifact_list.invokeStatic (artifacts.clj:145)
    refactor_nrepl.artifacts$artifact_list.invoke (artifacts.clj:142)
    clojure.lang.Var.invoke (Var.java:384)
    refactor_nrepl.middleware$artifact_list_reply$fn__15622.invoke (middleware.clj:121)
    refactor_nrepl.ns.libspec_allowlist$with_memoized_libspec_allowlist_STAR_.invokeStatic (libspec_allowlist.clj:41)
    refactor_nrepl.ns.libspec_allowlist$with_memoized_libspec_allowlist_STAR_.invoke (libspec_allowlist.clj:39)
    refactor_nrepl.middleware$artifact_list_reply.invokeStatic (middleware.clj:121)
    refactor_nrepl.middleware$artifact_list_reply.invoke (middleware.clj:120)
    refactor_nrepl.middleware$wrap_refactor$fn__15712.invoke (middleware.clj:232)
    nrepl.middleware$wrap_conj_descriptor$fn__13594.invoke (middleware.clj:16)
    cider.nrepl$wrap_undef$fn__16024.invoke (nrepl.clj:531)
    nrepl.middleware$wrap_conj_descriptor$fn__13594.invoke (middleware.clj:16)
    cider.nrepl$wrap_tracker$fn__16016.invoke (nrepl.clj:520)
    nrepl.middleware$wrap_conj_descriptor$fn__13594.invoke (middleware.clj:16)
    cider.nrepl$wrap_version$fn__16034.invoke (nrepl.clj:542)
    nrepl.middleware$wrap_conj_descriptor$fn__13594.invoke (middleware.clj:16)
    cider.nrepl$wrap_ns$fn__15944.invoke (nrepl.clj:300)
    nrepl.middleware$wrap_conj_descriptor$fn__13594.invoke (middleware.clj:16)
    cider.nrepl$wrap_out$fn__15952.invoke (nrepl.clj:334)
    nrepl.middleware$wrap_conj_descriptor$fn__13594.invoke (middleware.clj:16)
    cider.nrepl$wrap_slurp$fn__15860.invoke (nrepl.clj:121)
    nrepl.middleware$wrap_conj_descriptor$fn__13594.invoke (middleware.clj:16)
    cider.nrepl$wrap_classpath$fn__15876.invoke (nrepl.clj:137)
    nrepl.middleware$wrap_conj_descriptor$fn__13594.invoke (middleware.clj:16)
    nrepl.middleware.lookup$wrap_lookup$fn__14516.invoke (lookup.clj:52)
    nrepl.middleware$wrap_conj_descriptor$fn__13594.invoke (middleware.clj:16)
    cider.nrepl$wrap_clojuredocs$fn__16050.invoke (nrepl.clj:567)
    nrepl.middleware$wrap_conj_descriptor$fn__13594.invoke (middleware.clj:16)
    nrepl.middleware.session$session$fn__14033.invoke (session.clj:325)
    nrepl.middleware$wrap_conj_descriptor$fn__13594.invoke (middleware.clj:16)
    nrepl.server$default_handler$fn__14601.invoke (server.clj:141)
    nrepl.server$handle_STAR_.invokeStatic (server.clj:24)
    nrepl.server$handle_STAR_.invoke (server.clj:21)
    nrepl.server$handle$fn__14569.invoke (server.clj:41)
    clojure.core$binding_conveyor_fn$fn__5823.invoke (core.clj:2047)
    clojure.lang.AFn.call (AFn.java:18)
    java.util.concurrent.FutureTask.run (FutureTask.java:317)
    java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1144)
    java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:642)
    java.lang.Thread.run (Thread.java:1589)
Caused by: java.io.EOFException: Unexpected end of ZLIB input stream
 at java.util.zip.InflaterInputStream.fill (InflaterInputStream.java:244)
    java.util.zip.InflaterInputStream.read (InflaterInputStream.java:159)
    java.util.zip.GZIPInputStream.read (GZIPInputStream.java:117)
    sun.nio.cs.StreamDecoder.readBytes (StreamDecoder.java:333)
    sun.nio.cs.StreamDecoder.implRead (StreamDecoder.java:376)
    sun.nio.cs.StreamDecoder.lockedRead (StreamDecoder.java:219)
    sun.nio.cs.StreamDecoder.read (StreamDecoder.java:173)
    java.io.InputStreamReader.read (InputStreamReader.java:189)
    java.io.BufferedReader.fill (BufferedReader.java:161)
    java.io.BufferedReader.implReadLine (BufferedReader.java:371)
    java.io.BufferedReader.readLine (BufferedReader.java:348)
    java.io.BufferedReader.readLine (BufferedReader.java:437)
    clojure.core$line_seq.invokeStatic (core.clj:3092)
    clojure.core$line_seq$fn__6037.invoke (core.clj:3093)
    clojure.lang.LazySeq.sval (LazySeq.java:42)
    clojure.lang.LazySeq.seq (LazySeq.java:51)
    clojure.lang.RT.seq (RT.java:535)
    clojure.core$seq__5467.invokeStatic (core.clj:139)
    clojure.core$keep$fn__8649.invoke (core.clj:7398)
    clojure.lang.LazySeq.sval (LazySeq.java:42)
    clojure.lang.LazySeq.seq (LazySeq.java:51)
    clojure.lang.Cons.next (Cons.java:39)
    clojure.lang.RT.next (RT.java:713)
    clojure.core$next__5451.invokeStatic (core.clj:64)
    clojure.core.protocols$fn__8249.invokeStatic (protocols.clj:169)
    clojure.core.protocols/fn (protocols.clj:124)
    clojure.core.protocols$fn__8204$G__8199__8213.invoke (protocols.clj:19)
    clojure.core.protocols$seq_reduce.invokeStatic (protocols.clj:31)
    clojure.core.protocols$fn__8236.invokeStatic (protocols.clj:75)
    clojure.core.protocols/fn (protocols.clj:75)
    clojure.core.protocols$fn__8178$G__8173__8191.invoke (protocols.clj:13)
    clojure.core$reduce.invokeStatic (core.clj:6886)
    clojure.core$reduce.invoke (core.clj:6868)
    refactor_nrepl.artifacts$get_artifacts_from_clojars_BANG_.invokeStatic (artifacts.clj:126)
    refactor_nrepl.artifacts$get_artifacts_from_clojars_BANG_.invoke (artifacts.clj:124)
    refactor_nrepl.artifacts$update_artifact_cache_BANG_$fn__22649.invoke (artifacts.clj:132)
    clojure.core$binding_conveyor_fn$fn__5823.invoke (core.clj:2047)
    clojure.lang.AFn.call (AFn.java:18)
    java.util.concurrent.FutureTask.run (FutureTask.java:317)
    java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1144)
    java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:642)
    java.lang.Thread.run (Thread.java:1589)
vemv commented 1 year ago

There's a fair chance that the file (as fetched from Clojars or Maven Central) itself is corrupted. Note from the stacktrace that it's Java 'stdlib' code that it's failing - which I presume is bug-free.

I might add some extra error handling. But perhaps there's not much meaningful error handling to add: if I swallow the EOF, then clj-refactor.el will have nothing to show.

In practice I'd recommend trying again in a couple days (and reporting back).

Cheers - V

rmuslimov commented 1 year ago

@vemv You were absolutely right, it just started working this morning. Thanks!

vemv commented 1 year ago

Much useful feedback - thank you!

mukundzare commented 1 year ago

Yes it did start working again today!