[infinispan-dev] Issue about propagation of the RollbackCommand in Infinispan 5.2.0

Mircea Markus mircea.markus at jboss.com
Fri Aug 17 10:59:26 EDT 2012


On 17 Aug 2012, at 13:16, Sebastiano Peluso wrote:

> Hi all,
> 
> I have a question about the propagation of the RollbackCommand in 
> Infinispan 5.2.0 when I use the Optimistic locking scheme and the 
> Distribution clustering mode.
> 
> In particular I have noticed that a RollbackCommand command for a 
> transaction T is propagated on a set of nodes S even if T's coordinator 
> has never sent and it will never send a PrepareCommand command to nodes 
> in S.
> 
> I try to make clear the issue by the following example.
>  Suppose you have a transaction T executing on node N0 and T writes on 
> keys k0, k1, k2,...., km (m+1 keys) until it reaches the prepare phase. 
> In addition node Ni, with i=0,...,m+1, is the ki's primary owner. If at 
> prepare time, during the lock acquisition on the local node N0 (see 
> visitPrepareCommand method in OptimisticLockingInterceptor class) T 
> fails to acquire the lock on k0, an exception is thrown (e.g. 
> TimeoutException) and T will be rolled back. In this case, when T starts 
> the rollback phase, it seems to me that a RollbackCommand command is 
> multicast to all nodes Nj, with j=1,...,d, if k0 is sorted after kj 
> during the local lock acquisition (see acquireAllLocks method in 
> OptimisticLockingInterceptor), because:
> 
>  - shouldInvokeRemoteCommand method on the TxInvocationContext returns 
> true (see BaseRpcInterceptor class);
>  - getAffectedKeys on the TxInvocationContext returns the set {k1,..., 
> kd} (see visitRollbackCommand in DistributionInterceptor class).
> 
> Is it correct?
> 
> If I'm not wrong, which is the design choice behind this implementation?
This is indeed sub-optimal, but not incorrect.
Does this break the TOA/TOB stuff? Mind creating a JIRA for it?



More information about the infinispan-dev mailing list