public class LockingInterceptor
extends org.infinispan.interceptors.locking.NonTransactionalLockingInterceptor
NonTransactionalLockingInterceptor
,
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 has Flag.CACHE_MODE_LOCAL
- these commands don't acquire locks either.
Therefore, this interceptor locks the entry all the time. UnorderedDistributionInterceptor
does not forward
the message from non-origin to any other node, and the distribution interceptor won't block on RPC but will return
CompletableFuture
and we'll wait for it here.Constructor and Description |
---|
LockingInterceptor() |
Modifier and Type | Method and Description |
---|---|
protected java.lang.Object |
visitDataWriteCommand(org.infinispan.context.InvocationContext ctx,
org.infinispan.commands.write.DataWriteCommand command) |
getLog, visitDataReadCommand, visitGetAllCommand, visitPutMapCommand
cleanLocksAndRethrow, getLockTimeoutMillis, lockAllAndRecord, lockAllAndRecord, lockAndRecord, setDependencies, shouldLockKey, visitClearCommand, visitGetCacheEntryCommand, visitGetKeyValueCommand, visitInvalidateCommand, visitInvalidateL1Command, visitNonTxDataWriteCommand, visitPutKeyValueCommand, visitReadWriteKeyCommand, visitReadWriteKeyValueCommand, visitRemoveCommand, visitReplaceCommand, visitWriteOnlyKeyCommand, visitWriteOnlyKeyValueCommand
getCacheWithFlags, getLockAcquisitionTimeout, getNext, handleDefault, hasNext, hasSkipLocking, injectConfiguration, invokeNextInterceptor, setNext
visitApplyDeltaCommand, visitCollection, visitCommitCommand, visitDistributedExecuteCommand, visitEntrySetCommand, visitEvictCommand, visitGetKeysInGroupCommand, visitKeySetCommand, visitLockControlCommand, visitPrepareCommand, visitReadOnlyKeyCommand, visitReadOnlyManyCommand, visitReadWriteManyCommand, visitReadWriteManyEntriesCommand, visitRollbackCommand, visitSizeCommand, visitUnknownCommand, visitWriteOnlyManyCommand, visitWriteOnlyManyEntriesCommand
protected java.lang.Object visitDataWriteCommand(org.infinispan.context.InvocationContext ctx, org.infinispan.commands.write.DataWriteCommand command) throws java.lang.Throwable
visitDataWriteCommand
in class org.infinispan.interceptors.locking.NonTransactionalLockingInterceptor
java.lang.Throwable
Copyright © 2001-2018 Red Hat, Inc. All Rights Reserved.