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
-~----------~----~----~----~------~----~------~--~---

Reply via email to