org.jboss.cache.interceptors
Class ReplicationInterceptor

java.lang.Object
  extended by org.jboss.cache.interceptors.Interceptor
      extended by org.jboss.cache.interceptors.MethodDispacherInterceptor
          extended by org.jboss.cache.interceptors.BaseRpcInterceptor
              extended by org.jboss.cache.interceptors.ReplicationInterceptor
All Implemented Interfaces:
InterceptorMBean

public class ReplicationInterceptor
extends BaseRpcInterceptor

Takes care of replicating modifications to other nodes in a cluster. Also listens for prepare(), commit() and rollback() messages which are received 'side-ways' (see docs/design/Refactoring.txt).

Version:
$Id: ReplicationInterceptor.java 5448 2008-03-19 01:05:11Z manik.surtani@jboss.com $
Author:
Bela Ban

Field Summary
 
Fields inherited from class org.jboss.cache.interceptors.BaseRpcInterceptor
defaultSynchronous
 
Fields inherited from class org.jboss.cache.interceptors.Interceptor
cache, configuration, last, log, next, trace
 
Constructor Summary
ReplicationInterceptor()
           
 
Method Summary
protected  Object handleCommitMethod(InvocationContext ctx, GlobalTransaction gtx)
          Handles CacheImpl.commit(org.jboss.cache.transaction.GlobalTransaction)
protected  Object handleDataGravitationCleanupMethod(InvocationContext ctx, Fqn primary, Fqn backup)
          Handles RemoteCacheInvocationDelegate.dataGravitationCleanup(org.jboss.cache.Fqn, org.jboss.cache.Fqn)
protected  Object handleMoveMethod(InvocationContext ctx, Fqn from, Fqn to)
          Handles CacheImpl._move(org.jboss.cache.Fqn, org.jboss.cache.Fqn)
protected  Object handlePrepareMethod(InvocationContext ctx, GlobalTransaction gtx, List modification, org.jgroups.Address coordinator, boolean onePhaseCommit)
          Handles CacheImpl.prepare(org.jboss.cache.transaction.GlobalTransaction, java.util.List, org.jgroups.Address, boolean)
protected  Object handlePutDataEraseMethod(InvocationContext ctx, GlobalTransaction gt, Fqn fqn, Map newData, boolean createUndoOps, boolean eraseContents)
          Handles CacheImpl._put(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, java.util.Map, boolean, boolean)
protected  Object handlePutDataEraseVersionedMethod(InvocationContext ctx, GlobalTransaction gtx, Fqn fqn, Map data, boolean createUndoOps, boolean eraseContent, DataVersion dv)
          Handles CacheImpl._put(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, java.util.Map, boolean, boolean, org.jboss.cache.optimistic.DataVersion)
protected  Object handlePutDataMethod(InvocationContext ctx, GlobalTransaction tx, Fqn fqn, Map data, boolean createUndoOps)
          Handles CacheImpl._put(org.jboss.cache.transaction.GlobalTransaction, String, java.util.Map, boolean)
protected  Object handlePutDataVersionedMethod(InvocationContext ctx, GlobalTransaction globalTransaction, Fqn fqn, Map map, Boolean createUndoOps, DataVersion dataVersion)
          Handles CacheImpl._put(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, java.util.Map, boolean, org.jboss.cache.optimistic.DataVersion)
protected  Object handlePutForExternalReadMethod(InvocationContext ctx, GlobalTransaction gtx, Fqn fqn, Object key, Object value)
          Handles CacheImpl._putForExternalRead(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, Object, Object)
protected  Object handlePutForExternalReadVersionedMethod(InvocationContext ctx, GlobalTransaction gtx, Fqn fqn, Object key, Object value, DataVersion dv)
          Handles CacheImpl._putForExternalRead(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, Object, Object, org.jboss.cache.optimistic.DataVersion)
protected  Object handlePutKeyValueMethod(InvocationContext ctx, GlobalTransaction gtx, Fqn fqn, Object key, Object value, boolean createUndoOps)
          Handles CacheImpl._put(org.jboss.cache.transaction.GlobalTransaction, String, Object, Object, boolean)
protected  Object handlePutKeyValueVersionedMethod(InvocationContext ctx, GlobalTransaction gtx, Fqn fqn, Object key, Object value, boolean createUndoOps, DataVersion dv)
          Handles CacheImpl._put(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, Object, Object, boolean, org.jboss.cache.optimistic.DataVersion)
protected  Object handleRemoveDataMethod(InvocationContext ctx, GlobalTransaction tx, Fqn fqn, boolean createUndoOps)
          Handles CacheImpl._removeData(org.jboss.cache.transaction.GlobalTransaction, Fqn, boolean)
protected  Object handleRemoveDataVersionedMethod(InvocationContext ctx, GlobalTransaction gtx, Fqn fqn, boolean createUndoOps, DataVersion dv)
          Handles CacheImpl._removeData(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, boolean, org.jboss.cache.optimistic.DataVersion)
protected  Object handleRemoveKeyMethod(InvocationContext ctx, GlobalTransaction tx, Fqn fqn, Object key, boolean createUndoOps)
          Handles CacheImpl._remove(org.jboss.cache.transaction.GlobalTransaction, String, Object, boolean)
protected  Object handleRemoveKeyVersionedMethod(InvocationContext ctx, GlobalTransaction gtx, Fqn fqn, Object key, boolean createUndoOps, DataVersion dv)
          Handles CacheImpl._remove(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, Object, boolean, org.jboss.cache.optimistic.DataVersion)
protected  Object handleRemoveNodeMethod(InvocationContext ctx, GlobalTransaction tx, Fqn fqn, boolean createUndoOps)
          Handles CacheImpl._remove(org.jboss.cache.transaction.GlobalTransaction, String, boolean)
protected  Object handleRemoveNodeVersionedMethod(InvocationContext ctx, GlobalTransaction gtx, Fqn fqn, boolean createUndoOps, DataVersion dv)
          Handles CacheImpl._remove(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, boolean, org.jboss.cache.optimistic.DataVersion)
protected  Object handleRollbackMethod(InvocationContext ctx, GlobalTransaction gtx)
          Handles CacheImpl.rollback(org.jboss.cache.transaction.GlobalTransaction)
protected  void runPreparePhase(MethodCall prepareMethod, GlobalTransaction gtx, InvocationContext ctx)
          Calls prepare(GlobalTransaction,List,org.jgroups.Address,boolean)) in all members except self.
protected  boolean skipMethodCall(InvocationContext ctx)
          Each interceptor should extend this if it does not need any processing for current call.
 
Methods inherited from class org.jboss.cache.interceptors.BaseRpcInterceptor
containsModifications, checkResponses, isSynchronous, isTransactionalAndLocal, putCallOnAsyncReplicationQueue, replicateCall, replicateCall, replicateCall, replicateCall, setCache, skipReplicationOfTransactionMethod
 
Methods inherited from class org.jboss.cache.interceptors.MethodDispacherInterceptor
handleAddChildMethod, handleBlockChannelMethod, handleEvictMethod, handleEvictVersionedNodeMethod, handleExistsMethod, handleGetDataMapMethod, handleGetChildrenNamesMethod, handleGetKeysMethod, handleGetKeyValueMethod, handleGetNodeMethod, handleLockMethod, handleOptimisticPrepareMethod, handlePrintMethod, handleReleaseAllLocksMethod, handleUnblockChannelMethod, invoke
 
Methods inherited from class org.jboss.cache.interceptors.Interceptor
assertTransactionValid, dumpStatistics, getLast, getNext, getStatisticsEnabled, initLogger, isActive, isPreparing, isValid, nextInterceptor, peekNode, resetStatistics, setLast, setNext, setStatisticsEnabled, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ReplicationInterceptor

public ReplicationInterceptor()
Method Detail

skipMethodCall

protected boolean skipMethodCall(InvocationContext ctx)
Description copied from class: MethodDispacherInterceptor
Each interceptor should extend this if it does not need any processing for current call. An sample usage would be: this interceptor is only interested if thre is one transaction going on. If so all handleXYZ would know that we have a transaction going and would not check its state.

Overrides:
skipMethodCall in class MethodDispacherInterceptor

handleCommitMethod

protected Object handleCommitMethod(InvocationContext ctx,
                                    GlobalTransaction gtx)
                             throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl.commit(org.jboss.cache.transaction.GlobalTransaction)

Overrides:
handleCommitMethod in class MethodDispacherInterceptor
Throws:
Throwable

handlePrepareMethod

protected Object handlePrepareMethod(InvocationContext ctx,
                                     GlobalTransaction gtx,
                                     List modification,
                                     org.jgroups.Address coordinator,
                                     boolean onePhaseCommit)
                              throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl.prepare(org.jboss.cache.transaction.GlobalTransaction, java.util.List, org.jgroups.Address, boolean)

Overrides:
handlePrepareMethod in class MethodDispacherInterceptor
Throws:
Throwable

handleRollbackMethod

protected Object handleRollbackMethod(InvocationContext ctx,
                                      GlobalTransaction gtx)
                               throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl.rollback(org.jboss.cache.transaction.GlobalTransaction)

Overrides:
handleRollbackMethod in class MethodDispacherInterceptor
Throws:
Throwable

handlePutForExternalReadMethod

protected Object handlePutForExternalReadMethod(InvocationContext ctx,
                                                GlobalTransaction gtx,
                                                Fqn fqn,
                                                Object key,
                                                Object value)
                                         throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl._putForExternalRead(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, Object, Object)

Overrides:
handlePutForExternalReadMethod in class MethodDispacherInterceptor
Throws:
Throwable

handlePutDataMethod

protected Object handlePutDataMethod(InvocationContext ctx,
                                     GlobalTransaction tx,
                                     Fqn fqn,
                                     Map data,
                                     boolean createUndoOps)
                              throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl._put(org.jboss.cache.transaction.GlobalTransaction, String, java.util.Map, boolean)

Overrides:
handlePutDataMethod in class MethodDispacherInterceptor
Throws:
Throwable

handlePutDataEraseMethod

protected Object handlePutDataEraseMethod(InvocationContext ctx,
                                          GlobalTransaction gt,
                                          Fqn fqn,
                                          Map newData,
                                          boolean createUndoOps,
                                          boolean eraseContents)
                                   throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl._put(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, java.util.Map, boolean, boolean)

Overrides:
handlePutDataEraseMethod in class MethodDispacherInterceptor
Throws:
Throwable

handlePutKeyValueVersionedMethod

protected Object handlePutKeyValueVersionedMethod(InvocationContext ctx,
                                                  GlobalTransaction gtx,
                                                  Fqn fqn,
                                                  Object key,
                                                  Object value,
                                                  boolean createUndoOps,
                                                  DataVersion dv)
                                           throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl._put(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, Object, Object, boolean, org.jboss.cache.optimistic.DataVersion)

Overrides:
handlePutKeyValueVersionedMethod in class MethodDispacherInterceptor
Throws:
Throwable

handlePutDataEraseVersionedMethod

protected Object handlePutDataEraseVersionedMethod(InvocationContext ctx,
                                                   GlobalTransaction gtx,
                                                   Fqn fqn,
                                                   Map data,
                                                   boolean createUndoOps,
                                                   boolean eraseContent,
                                                   DataVersion dv)
                                            throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl._put(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, java.util.Map, boolean, boolean, org.jboss.cache.optimistic.DataVersion)

Overrides:
handlePutDataEraseVersionedMethod in class MethodDispacherInterceptor
Throws:
Throwable

handlePutDataVersionedMethod

protected Object handlePutDataVersionedMethod(InvocationContext ctx,
                                              GlobalTransaction globalTransaction,
                                              Fqn fqn,
                                              Map map,
                                              Boolean createUndoOps,
                                              DataVersion dataVersion)
                                       throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl._put(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, java.util.Map, boolean, org.jboss.cache.optimistic.DataVersion)

Overrides:
handlePutDataVersionedMethod in class MethodDispacherInterceptor
Throws:
Throwable

handlePutKeyValueMethod

protected Object handlePutKeyValueMethod(InvocationContext ctx,
                                         GlobalTransaction gtx,
                                         Fqn fqn,
                                         Object key,
                                         Object value,
                                         boolean createUndoOps)
                                  throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl._put(org.jboss.cache.transaction.GlobalTransaction, String, Object, Object, boolean)

Overrides:
handlePutKeyValueMethod in class MethodDispacherInterceptor
Throws:
Throwable

handlePutForExternalReadVersionedMethod

protected Object handlePutForExternalReadVersionedMethod(InvocationContext ctx,
                                                         GlobalTransaction gtx,
                                                         Fqn fqn,
                                                         Object key,
                                                         Object value,
                                                         DataVersion dv)
                                                  throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl._putForExternalRead(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, Object, Object, org.jboss.cache.optimistic.DataVersion)

Overrides:
handlePutForExternalReadVersionedMethod in class MethodDispacherInterceptor
Throws:
Throwable

handleRemoveNodeMethod

protected Object handleRemoveNodeMethod(InvocationContext ctx,
                                        GlobalTransaction tx,
                                        Fqn fqn,
                                        boolean createUndoOps)
                                 throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl._remove(org.jboss.cache.transaction.GlobalTransaction, String, boolean)

Overrides:
handleRemoveNodeMethod in class MethodDispacherInterceptor
Throws:
Throwable

handleRemoveKeyMethod

protected Object handleRemoveKeyMethod(InvocationContext ctx,
                                       GlobalTransaction tx,
                                       Fqn fqn,
                                       Object key,
                                       boolean createUndoOps)
                                throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl._remove(org.jboss.cache.transaction.GlobalTransaction, String, Object, boolean)

Overrides:
handleRemoveKeyMethod in class MethodDispacherInterceptor
Throws:
Throwable

handleRemoveDataMethod

protected Object handleRemoveDataMethod(InvocationContext ctx,
                                        GlobalTransaction tx,
                                        Fqn fqn,
                                        boolean createUndoOps)
                                 throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl._removeData(org.jboss.cache.transaction.GlobalTransaction, Fqn, boolean)

Overrides:
handleRemoveDataMethod in class MethodDispacherInterceptor
Throws:
Throwable

handleDataGravitationCleanupMethod

protected Object handleDataGravitationCleanupMethod(InvocationContext ctx,
                                                    Fqn primary,
                                                    Fqn backup)
                                             throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles RemoteCacheInvocationDelegate.dataGravitationCleanup(org.jboss.cache.Fqn, org.jboss.cache.Fqn)

Overrides:
handleDataGravitationCleanupMethod in class MethodDispacherInterceptor
Throws:
Throwable

handleMoveMethod

protected Object handleMoveMethod(InvocationContext ctx,
                                  Fqn from,
                                  Fqn to)
                           throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl._move(org.jboss.cache.Fqn, org.jboss.cache.Fqn)

Overrides:
handleMoveMethod in class MethodDispacherInterceptor
Throws:
Throwable

handleRemoveNodeVersionedMethod

protected Object handleRemoveNodeVersionedMethod(InvocationContext ctx,
                                                 GlobalTransaction gtx,
                                                 Fqn fqn,
                                                 boolean createUndoOps,
                                                 DataVersion dv)
                                          throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl._remove(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, boolean, org.jboss.cache.optimistic.DataVersion)

Overrides:
handleRemoveNodeVersionedMethod in class MethodDispacherInterceptor
Throws:
Throwable

handleRemoveKeyVersionedMethod

protected Object handleRemoveKeyVersionedMethod(InvocationContext ctx,
                                                GlobalTransaction gtx,
                                                Fqn fqn,
                                                Object key,
                                                boolean createUndoOps,
                                                DataVersion dv)
                                         throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl._remove(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, Object, boolean, org.jboss.cache.optimistic.DataVersion)

Overrides:
handleRemoveKeyVersionedMethod in class MethodDispacherInterceptor
Throws:
Throwable

handleRemoveDataVersionedMethod

protected Object handleRemoveDataVersionedMethod(InvocationContext ctx,
                                                 GlobalTransaction gtx,
                                                 Fqn fqn,
                                                 boolean createUndoOps,
                                                 DataVersion dv)
                                          throws Throwable
Description copied from class: MethodDispacherInterceptor
Handles CacheImpl._removeData(org.jboss.cache.transaction.GlobalTransaction, org.jboss.cache.Fqn, boolean, org.jboss.cache.optimistic.DataVersion)

Overrides:
handleRemoveDataVersionedMethod in class MethodDispacherInterceptor
Throws:
Throwable

runPreparePhase

protected void runPreparePhase(MethodCall prepareMethod,
                               GlobalTransaction gtx,
                               InvocationContext ctx)
                        throws Throwable
Calls prepare(GlobalTransaction,List,org.jgroups.Address,boolean)) in all members except self. Waits for all responses. If one of the members failed to prepare, its return value will be an exception. If there is one exception we rethrow it. This will mark the current transaction as rolled back, which will cause the afterCompletion(int) callback to have a status of MARKED_ROLLBACK. When we get that call, we simply roll back the transaction.
If everything runs okay, the afterCompletion(int) callback will trigger the @link #runCommitPhase(GlobalTransaction)).

Throws:
Exception
Throwable


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