I've done some more work on Clojure + Terracotta. I moved my code into a Terracotta Integration Module (TIM), which allows the bundling and reuse of the Terracotta configuration, but also provides for class replacement so that clustered versions of some classes can be written without necessarily having to support Terracotta in the Clojure codebase.
I have shared the TIM here: http://github.com/pjstadig/tim-clojure-1.0-snapshot/tree/master and an update here: http://paul.stadig.name/2009/03/clojure-terracotta-next-steps.html The summary is that I've now got a REPL running with Terracotta, but I cannot connect multiple JVMs because of two issues. 1) *in*, *out*, and *err* need to be different per JVM, but the way Vars work the root binding is shared amongst all JVMs. My temporary workaround is to leave the root binding nil, and manually bind those vars (as per suggestion from Rich). 2) When pulling compiled functions out of the Terracotta cache, I get a ClassNotFoundException, because the classes of compiled functions are not being shared via Terracotta. We need to either find a way to get those classes into the object graph, or come up with some other solution. Once getting past these issues, there is still more work to be done. I know for a fact that Agents will not work (because they use AtomicReference), neither will Atoms. I'm sure we will come across other issues, but we're making some good progress here. Paul --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---