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 clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
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 clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to