Infinispan Distribution 5.2.6.Final-redhat-2

org.infinispan.interceptors.distribution
Class TxDistributionInterceptor

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.TxDistributionInterceptor
All Implemented Interfaces:
Visitor
Direct Known Subclasses:
VersionedDistributionInterceptor

public class TxDistributionInterceptor
extends BaseDistributionInterceptor

Handles the distribution of the transactional caches.

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
TxDistributionInterceptor()
           
 
Method Summary
protected  Future<?> flushL1Caches(InvocationContext ctx)
           
protected  Object handleWriteCommand(InvocationContext ctx, WriteCommand command, org.infinispan.interceptors.distribution.BaseDistributionInterceptor.RecipientGenerator recipientGenerator, boolean skipRemoteGet, boolean skipL1Invalidation)
          If we are within one transaction we won't do any replication as replication would only be performed at commit time.
protected  boolean ignorePreviousValueOnBackup(WriteCommand command, InvocationContext ctx)
          For conditional operations (replace, remove, put if absent) Used only for optimistic transactional caches, to solve the following situation:
 void init(L1Manager l1Manager)
           
protected  void prepareOnAffectedNodes(TxInvocationContext ctx, PrepareCommand command, Collection<Address> recipients, boolean sync)
           
protected  void sendCommitCommand(TxInvocationContext ctx, CommitCommand command)
           
 void start()
           
 Object visitClearCommand(InvocationContext ctx, ClearCommand command)
           
 Object visitCommitCommand(TxInvocationContext ctx, CommitCommand command)
           
 Object visitGetKeyValueCommand(InvocationContext ctx, GetKeyValueCommand command)
           
 Object visitLockControlCommand(TxInvocationContext ctx, LockControlCommand command)
           
 Object visitPrepareCommand(TxInvocationContext ctx, PrepareCommand command)
           
 Object visitPutKeyValueCommand(InvocationContext ctx, PutKeyValueCommand command)
           
 Object visitRemoveCommand(InvocationContext ctx, RemoveCommand command)
           
 Object visitReplaceCommand(InvocationContext ctx, ReplaceCommand command)
           
 Object visitRollbackCommand(TxInvocationContext ctx, RollbackCommand command)
           
 
Methods inherited from class org.infinispan.interceptors.distribution.BaseDistributionInterceptor
getLog, injectDependencies, isSingleOwnerAndLocal, retrieveFromRemoteSource, visitPutMapCommand
 
Methods inherited from class org.infinispan.interceptors.ClusteringInterceptor
configure, 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, visitDistributedExecuteCommand, visitEntrySetCommand, visitEvictCommand, visitInvalidateCommand, visitInvalidateL1Command, visitKeySetCommand, visitSizeCommand, visitUnknownCommand, visitValuesCommand
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TxDistributionInterceptor

public TxDistributionInterceptor()
Method Detail

init

public void init(L1Manager l1Manager)

visitReplaceCommand

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

visitRemoveCommand

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

ignorePreviousValueOnBackup

protected boolean ignorePreviousValueOnBackup(WriteCommand command,
                                              InvocationContext ctx)
For conditional operations (replace, remove, put if absent) Used only for optimistic transactional caches, to solve the following situation:
 - node A (owner, tx originator) does a successful replace
 - the actual value changes
 - tx commits. The value is applied on A (the check was performed at operation time) but is not applied on
   B (check is performed at commit time).
 In such situations (optimistic caches) the remote conditional command should not re-check the old value.
 

Overrides:
ignorePreviousValueOnBackup in class ClusteringInterceptor

start

public void start()

visitPutKeyValueCommand

public Object visitPutKeyValueCommand(InvocationContext ctx,
                                      PutKeyValueCommand command)
                               throws Throwable
Specified by:
visitPutKeyValueCommand in interface Visitor
Overrides:
visitPutKeyValueCommand in class AbstractVisitor
Throws:
Throwable

visitClearCommand

public Object visitClearCommand(InvocationContext ctx,
                                ClearCommand command)
                         throws Throwable
Specified by:
visitClearCommand in interface Visitor
Overrides:
visitClearCommand in class AbstractVisitor
Throws:
Throwable

visitGetKeyValueCommand

public Object visitGetKeyValueCommand(InvocationContext ctx,
                                      GetKeyValueCommand command)
                               throws Throwable
Specified by:
visitGetKeyValueCommand in interface Visitor
Overrides:
visitGetKeyValueCommand in class AbstractVisitor
Throws:
Throwable

visitLockControlCommand

public Object visitLockControlCommand(TxInvocationContext ctx,
                                      LockControlCommand command)
                               throws Throwable
Specified by:
visitLockControlCommand in interface Visitor
Overrides:
visitLockControlCommand in class AbstractVisitor
Throws:
Throwable

visitCommitCommand

public Object visitCommitCommand(TxInvocationContext ctx,
                                 CommitCommand command)
                          throws Throwable
Specified by:
visitCommitCommand in interface Visitor
Overrides:
visitCommitCommand in class AbstractVisitor
Throws:
Throwable

visitPrepareCommand

public Object visitPrepareCommand(TxInvocationContext ctx,
                                  PrepareCommand command)
                           throws Throwable
Specified by:
visitPrepareCommand in interface Visitor
Overrides:
visitPrepareCommand in class AbstractVisitor
Throws:
Throwable

prepareOnAffectedNodes

protected void prepareOnAffectedNodes(TxInvocationContext ctx,
                                      PrepareCommand command,
                                      Collection<Address> recipients,
                                      boolean sync)

visitRollbackCommand

public Object visitRollbackCommand(TxInvocationContext ctx,
                                   RollbackCommand command)
                            throws Throwable
Specified by:
visitRollbackCommand in interface Visitor
Overrides:
visitRollbackCommand in class AbstractVisitor
Throws:
Throwable

sendCommitCommand

protected void sendCommitCommand(TxInvocationContext ctx,
                                 CommitCommand command)
                          throws TimeoutException,
                                 InterruptedException
Throws:
TimeoutException
InterruptedException

handleWriteCommand

protected Object handleWriteCommand(InvocationContext ctx,
                                    WriteCommand command,
                                    org.infinispan.interceptors.distribution.BaseDistributionInterceptor.RecipientGenerator recipientGenerator,
                                    boolean skipRemoteGet,
                                    boolean skipL1Invalidation)
                             throws Throwable
If we are within one transaction we won't do any replication as replication would only be performed at commit time. If the operation didn't originate locally we won't do any replication either.

Specified by:
handleWriteCommand in class BaseDistributionInterceptor
Throws:
Throwable

flushL1Caches

protected Future<?> flushL1Caches(InvocationContext ctx)

Infinispan Distribution 5.2.6.Final-redhat-2

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