[infinispan-dev] Transactions across rehashes

Manik Surtani manik at jboss.org
Fri Dec 10 05:10:15 EST 2010


Yeah makes sense.

On 9 Dec 2010, at 20:32, Mircea Markus wrote:

> 
> On 9 Dec 2010, at 16:21, Vladimir Blagojevic wrote:
> 
>> Hey,
>> 
>> Continuing our conversation related to ISPN-799 that I have to fix soon 
>> :-) In summary, the real reason why tx fails for SingleJoinTest is 
>> actually a tx T being prepared for nodes A,B prior to rehash event 
>> triggered due to join and then committed on nodes A,C after the rehash. 
>> Manik, and I talked briefly on IRC and concluded that it is better to 
>> detect these cases and issue a rollback rather than deal with all the 
>> edge cases arising from handling "tx across rehashes" scenario.
> +1. That would make the code unnecessarily complicated.
>> 
>> If we do not detect such cases of "tx across rehashes" (which should 
>> occur rarely) the consequence is that some prepared tx will not be 
>> committed and the locks will remain on keys until stale lock cleanup 
>> mechanism or timeout kicks in.
>> 
>> In order to detected and implement handling tx across rehashes I need 
>> your input Mircea. I was looking at recording either a ch used to issue 
>> prepare or list of nodes where tx was prepared.
>> When later, commit is 
>> issued, list of nodes to send commit to is compared to prepared list. If 
>> they are not equal tx is marked for rollback. Same with a hash expect a 
>> different hash might map keys to same nodes. Mircea, can this state 
>> (either ch or list) be stored in global tx. Or you have some better ideas.
> I like it.
> You might be able to use the LocalTxInvocationContext.remoteLocksAcquired() method.
> This tracks the nodes where locks are being acquired during eager locking process (DistInterceptor.visitLockControlCommand) and uses this list in the StaleTransactionCleanup.onViewChange for marking these transactions for rollback.
> In fact I think that the only thing that needs to be done is to add the LocalTxInvocationContext.remoteLocksAcquired calls in the DistInterceptor.vistiPrepareCommand (or visitCommitCommand if 1PC is enabled).
>> Let me know WDYT.
>> 
>> Cheers,
>> Vladimir
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
> 
> 
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev

--
Manik Surtani
manik at jboss.org
Lead, Infinispan
Lead, JBoss Cache
http://www.infinispan.org
http://www.jbosscache.org







More information about the infinispan-dev mailing list