I'm new here and with infinispan, yet I'm considering it's usage as storage for datomic. The convenience of infinispan integration with datomic and immutant makes me wonder if we need something more than just that for durable storage (more would mean a more complicated setup). This is almost like the question of using infinispan as a database despite it's origin from being a data grid.
While datomic supports infinispan as storage, the creator of clojure and datomic, Rich Hickey, said in a post from a year and a half ago:
I think you need to be very careful if attempting to use Infinispan durably. Having grown up from being a cache, it has some interesting and possibly fatal options when treating cache loading as durability.
We only recommend Infinispan when your requirements are satisfied by a redundant memory cluster. In any case, be very certain of the semantics of the configuration settings you choose.
This was in october 2012 when infinispan 5.1 was released and 5.2 was in beta.
Since then I was wondering if new developments could mitigate this cautionary advice and if so what would be a proper configuration so that infinispan may become a reliable and durable storage, ie ACID even in case of hardware/datacenter failure. Reading infinispan doc it seems as if there could be some configuration where it can become a robust and durable store, part of such setting would certainly be the sync write-through mode, perhaps also the FULL_XA mode, but then it's unclear to me what would be the best store for such scenario and how the store would integrate with transactions (LevelDB doesn't do transaction from what I gather). Also unclear is if datomic, perhaps due to its way of using infinispan, would be able to take advantage of such configuration. This discussion indicates hotrod is used by both the datomic peers (readers only) and transactor (single writer).