[infinispan-issues] [JBoss JIRA] Commented: (ISPN-1137) Locking optimization: for dist lock only main data owner

Mircea Markus (JIRA) jira-events at lists.jboss.org
Tue May 24 16:44:01 EDT 2011


    [ https://issues.jboss.org/browse/ISPN-1137?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12604065#comment-12604065 ] 

Mircea Markus commented on ISPN-1137:
-------------------------------------

Suggested design.
This will be experimental in the first release. Enabling/disabling it can be done through the following configuration element:
{code:xml}
<transaction lockingSingleNode="true"/>
{code}
As this will be implemented after ISPN-1131, which is experimental as well, *lockingSingleNode* would only be available when *lockAtPrepareTime*="true".
If *lockAtPrepareTime*="false" and *lockingSingleNode*="true" a warning is logged to the user.
Also *lockingSingleNode* only makes sense for distributed caches. In the case the cache runs in replicated mode it is ignored.

Both local and remote locks are being acquired during prepare time in {{PrepareTimeLockingInterceptor.visitPrepareCommand}}:
{code:java}
@Override
   public Object visitPrepareCommand(TxInvocationContext ctx, PrepareCommand command) throws Throwable {
      super.visitPrepareCommand(ctx, command);
      if (ctx.isOriginLocal()) {
         for (WriteCommand wc : command.getModifications()) {
            acquireLock(wc);
         }
      }
      return invokeNextInterceptor(ctx, command);
   }
{code}
The method {{acquireLock(WriteCommand)}}, as described in ISPN-1131, will be enhanced to only acquire locks on the key(s) pertaining to the {{WriteCommand}} if the key{s} have as main data owner the node where the code executes.
A node *N* is defined as a main data owner of a key *k* if {{consistentHash(k).get(0)==N}}.

Handling failure situations: if a node on which a remote lock is acquired fails between after prepare and before commit, the prepare will be re-run on the new main data owner and only then committed (this was introduced together with ISPN-1049). 



> Locking optimization: for dist lock only main data owner 
> ---------------------------------------------------------
>
>                 Key: ISPN-1137
>                 URL: https://issues.jboss.org/browse/ISPN-1137
>             Project: Infinispan
>          Issue Type: Feature Request
>          Components: Transactions
>    Affects Versions: 4.2.1.FINAL
>            Reporter: Mircea Markus
>            Assignee: Manik Surtani
>              Labels: optimization
>
> Detailed here, as the 4th improvement: http://community.jboss.org/wiki/PossibleLockingImprovements
> As without ISPN-1131 locks are being acquired as the transaction progresses this optimization makes more sense after having ISPN-1131 in place.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the infinispan-issues mailing list