-
Enhancement
-
Resolution: Done
-
Blocker
-
None
Starting with Infinispan 5.1 a cache is only able to function in either transactional or non-transactional mode. Mixed mode won't be supported any more.
This is causing a backward compatibility issue for existing users that make both transactional and non-transactional access to the same cache.
A good example is the Lucene-directory that is writing to a cache through batching API and directly. In Lucene-D's case, one can configure autoCommit=true for a transaction: that will induce a transaction within direct (i.e. non transactional) calls. Whilst this preserves backward compatibility, it is not "good enough" as an injected transaction does results in 2 RPCs, one for each phase of 2PC, and that is less performant than the "old" direct call. In order to solve this performance shortcoming, another attribute is to be added: use1PcForInducedTransaction(default to true). Enabling this attribute causes the induced transaction to force an 1PC resulting in a single RPC. Other tx that induced one won't be affected by this configuration.
This mail thread is also relevant: http://bit.ly/plNbLT