Details
-
Type:
Defect
-
Status:
Closed
-
Priority:
Minor
-
Resolution: Completed
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: None
-
Labels:None
Description
When calling (read-line) from lein repl or ccw repl, waiting around four minutes (on my machine),
evaluating any form causes the following exception:
ERROR: Unhandled REPL handler exception processing message {:code (+ 1 1), :id 08e30b70-ab0f-4a47-8937-3c040ce06f4f, :ns user, :op eval, :session 916200cc-e476-4ac4-98f6-76057a9020be}
java.io.IOException: Write end dead
at java.io.PipedReader.ready(Unknown Source)
at clojure.tools.nrepl.middleware.session.proxy$java.io.PipedReader$0.ready(Unknown Source)
at java.io.BufferedReader.ready(Unknown Source)
at java.io.FilterReader.ready(Unknown Source)
at java.io.PushbackReader.ready(Unknown Source)
at clojure.tools.nrepl.middleware.session$add_stdin$fn__1103.invoke(session.clj:197)
at clojure.tools.nrepl.middleware$wrap_conj_descriptor$fn__840.invoke(middleware.clj:17)
at clojure.tools.nrepl.middleware.session$session$fn__1093.invoke(session.clj:165)
at clojure.tools.nrepl.middleware$wrap_conj_descriptor$fn__840.invoke(middleware.clj:17)
at clojure.tools.nrepl.server$handle_STAR_.invoke(server.clj:18)
at clojure.tools.nrepl.server$handle$fn__1132.invoke(server.clj:27)
at clojure.core$binding_conveyor_fn$fn__4130.invoke(core.clj:1836)
at clojure.lang.AFn.call(AFn.java:18)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
While googling a bit on this and without concrete knowledge of the implementation in nrepl,
it seems like closing a thread that wrote to PipedWriter, before closing the writer or writing to it from another thread,
causes PipedReader#ready to throw that exception.
Attachments
Activity
Colin Jones
made changes -
| Field | Original Value | New Value |
|---|---|---|
| Attachment | 0001-Use-a-queue-for-stdin-to-avoid-PipedReader-Writer.patch [ 11901 ] |
Colin Jones
made changes -
| Resolution | Completed [ 1 ] | |
| Approval | Ok [ 10007 ] | |
| Assignee | Chas Emerick [ cemerick ] | Colin Jones [ trptcolin ] |
| Status | Open [ 1 ] | Resolved [ 5 ] |
Colin Jones
made changes -
| Approval | Ok [ 10007 ] |
Colin Jones
made changes -
| Status | Resolved [ 5 ] | Closed [ 6 ] |