Class LockingInterceptor
- java.lang.Object
-
- org.infinispan.interceptors.BaseAsyncInterceptor
-
- org.infinispan.interceptors.DDAsyncInterceptor
-
- org.infinispan.interceptors.locking.AbstractLockingInterceptor
-
- org.infinispan.interceptors.locking.NonTransactionalLockingInterceptor
-
- org.infinispan.hibernate.cache.commons.access.LockingInterceptor
-
- All Implemented Interfaces:
org.infinispan.commands.Visitor,org.infinispan.interceptors.AsyncInterceptor
public class LockingInterceptor extends org.infinispan.interceptors.locking.NonTransactionalLockingInterceptorWith regularNonTransactionalLockingInterceptor, async replication does not work in combination with synchronous replication: sync replication relies on locking to order writes on backup while async replication relies on FIFO-ordering from primary to backup. If these two combine, there's a possibility that on backup two modifications modifications will proceed concurrently. Similar issue threatens consistency when the command hasFlag.CACHE_MODE_LOCAL- these commands don't acquire locks either. Therefore, this interceptor locks the entry all the time.UnorderedDistributionInterceptordoes not forward the message from non-origin to any other node, and the distribution interceptor won't block on RPC but will returnCompletableFutureand we'll wait for it here.
-
-
Field Summary
Fields Modifier and Type Field Description protected org.infinispan.interceptors.InvocationFinallyFunction<org.infinispan.commands.write.DataWriteCommand>invokeNextAndUnlockprotected org.infinispan.interceptors.InvocationFinallyFunction<org.infinispan.commands.write.DataWriteCommand>unlockAllReturnCheckCompletableFutureHandler
-
Constructor Summary
Constructors Constructor Description LockingInterceptor()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected ObjectvisitDataWriteCommand(org.infinispan.context.InvocationContext ctx, org.infinispan.commands.write.DataWriteCommand command)-
Methods inherited from class org.infinispan.interceptors.locking.NonTransactionalLockingInterceptor
getLog, handleReadManyCommand, handleWriteManyCommand, visitDataReadCommand, visitInvalidateCommand
-
Methods inherited from class org.infinispan.interceptors.locking.AbstractLockingInterceptor
getLockTimeoutMillis, lockAndRecord, start, visitClearCommand, visitComputeCommand, visitComputeIfAbsentCommand, visitGetAllCommand, visitGetCacheEntryCommand, visitGetKeyValueCommand, visitInvalidateL1Command, visitIracPutKeyValueCommand, visitPutKeyValueCommand, visitPutMapCommand, visitReadOnlyKeyCommand, visitReadOnlyManyCommand, visitReadWriteKeyCommand, visitReadWriteKeyValueCommand, visitReadWriteManyCommand, visitReadWriteManyEntriesCommand, visitRemoveCommand, visitRemoveExpiredCommand, visitReplaceCommand, visitWriteOnlyKeyCommand, visitWriteOnlyKeyValueCommand, visitWriteOnlyManyCommand, visitWriteOnlyManyEntriesCommand
-
Methods inherited from class org.infinispan.interceptors.DDAsyncInterceptor
handleDefault, visitCommand, visitCommitCommand, visitEntrySetCommand, visitEvictCommand, visitGetKeysInGroupCommand, visitKeySetCommand, visitLockControlCommand, visitPrepareCommand, visitRollbackCommand, visitSizeCommand, visitTouchCommand, visitUnknownCommand
-
Methods inherited from class org.infinispan.interceptors.BaseAsyncInterceptor
asyncInvokeNext, asyncInvokeNext, asyncInvokeNext, asyncValue, delayedNull, delayedValue, delayedValue, invokeNext, invokeNextAndExceptionally, invokeNextAndFinally, invokeNextAndHandle, invokeNextThenAccept, invokeNextThenApply, isSuccessfullyDone, makeStage, setNextInterceptor, valueOrException
-
-
-
-
Field Detail
-
unlockAllReturnCheckCompletableFutureHandler
protected final org.infinispan.interceptors.InvocationFinallyFunction<org.infinispan.commands.write.DataWriteCommand> unlockAllReturnCheckCompletableFutureHandler
-
invokeNextAndUnlock
protected final org.infinispan.interceptors.InvocationFinallyFunction<org.infinispan.commands.write.DataWriteCommand> invokeNextAndUnlock
-
-
Method Detail
-
visitDataWriteCommand
protected Object visitDataWriteCommand(org.infinispan.context.InvocationContext ctx, org.infinispan.commands.write.DataWriteCommand command)
- Overrides:
visitDataWriteCommandin classorg.infinispan.interceptors.locking.NonTransactionalLockingInterceptor
-
-