Hi Folks,
I'm stuck and would like a bit of help. This is following on from a
question I posted to clojure.tools, but I've reduced the problem to its
essence, and figure it might get a few more eyes on it here. My apologies
to anyone who has to suffer reading about it twice :-)
My actual problem is that I'm unable to get a Websocket transport for
gorilla-repl running. But I think I've boiled down the problem to something
that doesn't involve websockets. I'm trying to handle messages with nREPL.
If I run the following in the REPL to make an nREPL handler:
(require '[clojure.tools.nrepl.transport :as transport])
(require '[clojure.tools.nrepl.server :as nrepl-server])
(def handler (nrepl-server/default-handler))
(def trans (transport/fn-transport nil println))
(nrepl-server/handle* {:op "clone"} handler trans)
Then everything goes as I would hope. The nREPL server replies with a
new-session message, which is printed to the console by the dopey transport
I've provided. If I then lift the new session ID (copy and paste) and send
an evaluation message to the nREPL handler
(nrepl-server/handle* {:op "eval" :code "(+ 1 5)" :session
"2c8b0464-7e09-4c94-81d7-c4e0c7d1314f"} handler trans)
It works as I'd expect, replying with the value and a 'done' status message.
{status #{:done}, session 2c8b0464-7e09-4c94-81d7-c4e0c7d1314f}
{ns user, value 6, session 2c8b0464-7e09-4c94-81d7-c4e0c7d1314f}
The problem comes if I try and execute the same command again, which should
I would have thought should give the same answer, but instead I get an
extremely long stack trace, a snippet of which is below.
Exception in thread "nREPL-worker-0" java.lang.StackOverflowError
at clojure.lang.RestFn.applyTo(RestFn.java:130)
at clojure.core$apply.invoke(core.clj:617)
at clojure.core$prn.doInvoke(core.clj:3367)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:617)
at clojure.core$println.doInvoke(core.clj:3387)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.tools.nrepl.transport.FnTransport.send(transport.clj:28)
at
clojure.tools.nrepl.middleware.pr_values$pr_values$fn$reify__2353.send(pr_values.clj:23)
at
clojure.tools.nrepl.middleware.session$session_out$fn__2437.invoke(session.clj:51)
at
clojure.tools.nrepl.middleware.session.proxy$java.io.Writer$0.flush(Unknown
Source)
at
clojure.tools.nrepl.middleware.session$session_out$fn__2444.doInvoke(session.clj:44)
at clojure.lang.RestFn.invoke(RestFn.java:460)
at
clojure.tools.nrepl.middleware.session.proxy$java.io.Writer$0.write(Unknown
Source)
at java.io.PrintWriter.write(PrintWriter.java:456)
at java.io.PrintWriter.write(PrintWriter.java:473)
at clojure.core$fn__5420.invoke(core_print.clj:187)
at clojure.lang.MultiFn.invoke(MultiFn.java:231)
at clojure.core$pr_on.invoke(core.clj:3322)
at clojure.core$print_map$fn__5428.invoke(core_print.clj:200)
at clojure.core$print_sequential.invoke(core_print.clj:58)
at clojure.core$print_map.invoke(core_print.clj:203)
at clojure.core$fn__5431.invoke(core_print.clj:207)
at clojure.lang.MultiFn.invoke(MultiFn.java:231)
at clojure.core$pr_on.invoke(core.clj:3322)
at clojure.core$pr.invoke(core.clj:3334)
at clojure.lang.AFn.applyToHelper(AFn.java:161)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at clojure.core$apply.invoke(core.clj:617)
at clojure.core$prn.doInvoke(core.clj:3367)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:617)
at clojure.core$println.doInvoke(core.clj:3387)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.tools.nrepl.transport.FnTransport.send(transport.clj:28)
at
clojure.tools.nrepl.middleware.pr_values$pr_values$fn$reify__2353.send(pr_values.clj:23)
at
clojure.tools.nrepl.middleware.session$session_out$fn__2437.invoke(session.clj:51)
at
clojure.tools.nrepl.middleware.session.proxy$java.io.Writer$0.flush(Unknown
Source)
at
clojure.tools.nrepl.middleware.session$session_out$fn__2444.doInvoke(session.clj:44)
[snip]
Somehow, drawbridge gets this to work, even though as far as I can tell I'm
doing the same thing. I can't figure out what's going on. Help!
Thanks,
Jony
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.