[infinispan-dev] SingleJoinTest#testTransactional failure

Manik Surtani manik at jboss.org
Fri Nov 26 14:30:12 EST 2010


On 26 Nov 2010, at 18:58, Vladimir Blagojevic wrote:

> Hey,
> On 10-11-26 12:15 PM, Manik Surtani wrote:
>> 
>>> I like option 1 as well. I am interested in details of how this can be done. How do we set lock acquisition timeout for InvalidateL1Command, issue command to abort specific tx etc etc?
>> Propose a design, we can review it here.
>> 
> 
> Ok, how about this:
> 
> 1) JoinTask issues invalidateL1Command as it is now in JoinTask
> 2) In case of TimeoutException where cause is inability to acquire lock L on key K then issue rollback for tx T

Hmm, who issues this?  The joiner?  :/  Surely it should be the node which has the locks?

Also what would this look like in the case of a Leave?  Rehashes + L1 invalidations would happen there too.

> 3) Repeat 1
> 4) Loop 1-3 until success or timeout
> 
> 
> Questions:
> 
> 1) For step2, can we simply do commandsFactory.buildRollbackCommand(globalTx) and broadcast this message?
> 2) In order to achieve the above we have to add globalTx as parameter to TimeoutException where globalTx is a the tx associated with T. Is there another way to rollback a user transaction from JoinTask, another mechanism perhaps?

Perhaps InvalidateL1Command should carry a 'force' flag and if this is true, then the recipient attempts to 'force' the lock by causing the existing lock owner to roll back.

> 3) I would also move JOIN_REHASH_END end message sent to signal successful join *after* invalidation is done. Agree? Otherwise, we can have overlapping joins.

Well, the worst case here is that you invalidate something > once.  No big loss.  I'd rather have the join complete sooner.

Cheers
Manik
--
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