On 9 Jan 2012, at 13:56, Manik Surtani wrote: > > On 9 Jan 2012, at 11:43, Mircea Markus wrote: > >> >> On 9 Jan 2012, at 13:36, Manik Surtani wrote: >> >>> >>> On 9 Jan 2012, at 10:50, Mircea Markus wrote: >>> >>>> >>>> On 7 Jan 2012, at 18:57, Manik Surtani wrote: >>>> >>>>> After spending some hours on ISPN-1284, I think we have a few conceptual >>>>> problems with using Synchronizations. >>>>> >>>>> Here is the topic branch containing my work: >>>>> >>>>> https://github.com/maniksurtani/infinispan/tree/t_1284 >>>>> >>>>> So far what I have done is: >>>>> >>>>> * Changed defaults >>>>> * Changed config validations to emit a warning and disable >>>>> synchronisations if recovery is enabled >>>>> * Update some tests that rely on XA to specifically set synchronisations >>>>> to false >>>>> >>>>> But there are still some issues, and what specifically worry me is >>>>> behaviour demonstrated by these two test failures: >>>>> >>>>> testModsCommit(org.infinispan.lock.StaleEagerLocksOnPrepareFailureTest) >>>>> >>>>> testNoModsCommit(org.infinispan.lock.StaleEagerLocksOnPrepareFailureTest) >>>>> >>>>> They both attempt to abort a transaction by throwing an exception during >>>>> prepare. Now since we use Synchronizations by default, these failures do >>>>> *not* abort the transaction since it is only seen by the >>>>> SynchronizationAdapter in afterCommit(). Where does this stand, >>>>> conceptually? With optimistic transactions, locks may not be able to be >>>>> acquired at prepare-time. These transactions should fail. >>>> With pessimistic transactions, the first phase of 2PC is skipped: that is >>>> because locks are acquired and modifications propagated at this stage. So >>>> beforeCompletion doesn't do anything. >>>> However in the case of optimistic transactions the prepare happens during >>>> beforeCompletion and it would fail causing the tx to roll back. >>> >>> So Synchronizations and pessimistic locking are incompatible? :) >> Well this is very similar to what happens in the case of optimistic locking >> when the CommitCommand cannot be broadcasted: the transaction silently >> fails. > > Then the tests need to be re-written in this case, if we make > synchronisations a default? :) yes. Do you need help with that?
_______________________________________________ infinispan-dev mailing list infinispan-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/infinispan-dev