Infinispan Distribution 5.2.6.Final-redhat-2

org.infinispan.interceptors.distribution
Class NonTxConcurrentDistributionInterceptor

java.lang.Object
  extended by org.infinispan.commands.AbstractVisitor
      extended by org.infinispan.interceptors.base.CommandInterceptor
          extended by org.infinispan.interceptors.base.BaseRpcInterceptor
              extended by org.infinispan.interceptors.ClusteringInterceptor
                  extended by org.infinispan.interceptors.distribution.BaseDistributionInterceptor
                      extended by org.infinispan.interceptors.distribution.NonTxDistributionInterceptor
                          extended by org.infinispan.interceptors.distribution.NonTxConcurrentDistributionInterceptor
All Implemented Interfaces:
Visitor

public class NonTxConcurrentDistributionInterceptor
extends NonTxDistributionInterceptor

Non-transactional interceptor to be used by caches that want to support concurrent writes. It is implemented based on lock forwarding. E.g. - 'k' is written on node A, owners(k)={B,C} - A forwards the given command to B - B acquires a lock on 'k' then it forwards it to the remaining owners: C - C applies the change and returns to B (no lock acquisition is needed) - B applies the result as well, releases the lock and returns the result of the operation to A. Note that even though this introduces an additional RPC (the forwarding), it behaves very well in conjunction with consistent-hash aware hotrod clients which connect directly to the lock owner.

Since:
5.2
Author:
Mircea Markus

Field Summary
 
Fields inherited from class org.infinispan.interceptors.distribution.BaseDistributionInterceptor
cdl, dm
 
Fields inherited from class org.infinispan.interceptors.ClusteringInterceptor
cf, dataContainer, entryFactory, lockManager, needReliableReturnValues, stateTransferManager
 
Fields inherited from class org.infinispan.interceptors.base.BaseRpcInterceptor
defaultSynchronous, rpcManager
 
Fields inherited from class org.infinispan.interceptors.base.CommandInterceptor
cacheConfiguration
 
Constructor Summary
NonTxConcurrentDistributionInterceptor()
           
 
Method Summary
protected  Object handleLocalWrite(InvocationContext ctx, WriteCommand command, org.infinispan.interceptors.distribution.BaseDistributionInterceptor.RecipientGenerator rg, boolean skipL1Invalidation, boolean sync)
           
protected  void handleRemoteWrite(InvocationContext ctx, WriteCommand command, org.infinispan.interceptors.distribution.BaseDistributionInterceptor.RecipientGenerator recipientGenerator, boolean skipL1Invalidation, boolean sync)
           
 Object visitPutMapCommand(InvocationContext ctx, PutMapCommand command)
           
 
Methods inherited from class org.infinispan.interceptors.distribution.NonTxDistributionInterceptor
getResponseFromPrimaryOwner, handleWriteCommand, start, visitClearCommand, visitGetKeyValueCommand, visitPutKeyValueCommand
 
Methods inherited from class org.infinispan.interceptors.distribution.BaseDistributionInterceptor
getLog, injectDependencies, isSingleOwnerAndLocal, retrieveFromRemoteSource, visitRemoveCommand, visitReplaceCommand
 
Methods inherited from class org.infinispan.interceptors.ClusteringInterceptor
configure, ignorePreviousValueOnBackup, injectDependencies, isNeedReliableReturnValues, needsRemoteGet
 
Methods inherited from class org.infinispan.interceptors.base.BaseRpcInterceptor
init, inject, isLocalModeForced, isSynchronous, shouldInvokeRemoteTxCommand
 
Methods inherited from class org.infinispan.interceptors.base.CommandInterceptor
getLockAcquisitionTimeout, getNext, handleDefault, hasNext, hasSkipLocking, injectConfiguration, invokeNextInterceptor, setNext
 
Methods inherited from class org.infinispan.commands.AbstractVisitor
visitApplyDeltaCommand, visitCollection, visitCommitCommand, visitDistributedExecuteCommand, visitEntrySetCommand, visitEvictCommand, visitInvalidateCommand, visitInvalidateL1Command, visitKeySetCommand, visitLockControlCommand, visitPrepareCommand, visitRollbackCommand, visitSizeCommand, visitUnknownCommand, visitValuesCommand
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

NonTxConcurrentDistributionInterceptor

public NonTxConcurrentDistributionInterceptor()
Method Detail

visitPutMapCommand

public Object visitPutMapCommand(InvocationContext ctx,
                                 PutMapCommand command)
                          throws Throwable
Specified by:
visitPutMapCommand in interface Visitor
Overrides:
visitPutMapCommand in class BaseDistributionInterceptor
Throws:
Throwable

handleLocalWrite

protected Object handleLocalWrite(InvocationContext ctx,
                                  WriteCommand command,
                                  org.infinispan.interceptors.distribution.BaseDistributionInterceptor.RecipientGenerator rg,
                                  boolean skipL1Invalidation,
                                  boolean sync)
                           throws Throwable
Overrides:
handleLocalWrite in class NonTxDistributionInterceptor
Throws:
Throwable

handleRemoteWrite

protected void handleRemoteWrite(InvocationContext ctx,
                                 WriteCommand command,
                                 org.infinispan.interceptors.distribution.BaseDistributionInterceptor.RecipientGenerator recipientGenerator,
                                 boolean skipL1Invalidation,
                                 boolean sync)
                          throws Throwable
Overrides:
handleRemoteWrite in class NonTxDistributionInterceptor
Throws:
Throwable

Infinispan Distribution 5.2.6.Final-redhat-2

Copyright © 2013 JBoss, a division of Red Hat. All Rights Reserved.