Package org.infinispan.interceptors.impl
Class RetryingEntryWrappingInterceptor
java.lang.Object
org.infinispan.interceptors.BaseAsyncInterceptor
org.infinispan.interceptors.DDAsyncInterceptor
org.infinispan.interceptors.impl.EntryWrappingInterceptor
org.infinispan.interceptors.impl.RetryingEntryWrappingInterceptor
- All Implemented Interfaces:
Visitor,AsyncInterceptor
- Direct Known Subclasses:
BiasedEntryWrappingInterceptor
Used in @{link org.infinispan.configuration.cache.CacheMode#SCATTERED_SYNC scattered cache}
The commit is executed in
ScatteredDistributionInterceptor
before replicating the change from primary owner.
When the ScatteredDistributionInterceptor throws a ConcurrentChangeException during single-key
command processing, we know that the entry has not been committed and can safely remove the whole entry from context
and retry.
When the command processes multiple keys, some of the entries might be already committed. Therefore we have to keep
the original value in a RepeatableReadEntry and for committed entries we
only reset the value before retry (we assume that the outcome of an operation is deterministic). The non-committed
entries are removed and re-wrapped as in the single-key case.- Author:
- Radim Vansa <rvansa@redhat.com>
-
Field Summary
Fields inherited from class org.infinispan.interceptors.impl.EntryWrappingInterceptor
cdl, distributionManagerFields inherited from class org.infinispan.interceptors.BaseAsyncInterceptor
cacheConfiguration -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected ObjectsetSkipRemoteGetsAndInvokeNextForDataCommand(InvocationContext ctx, DataWriteCommand command, CompletionStage<Void> delay) Locks the value for the keys accessed by the command to avoid being override from a remote get.protected ObjectsetSkipRemoteGetsAndInvokeNextForManyEntriesCommand(InvocationContext ctx, WriteCommand command, CompletionStage<Void> delay) Locks the value for the keys accessed by the command to avoid being override from a remote get.Methods inherited from class org.infinispan.interceptors.impl.EntryWrappingInterceptor
canRead, canReadKey, commitContextEntries, commitContextEntry, start, visitClearCommand, visitCommitCommand, visitComputeCommand, visitComputeIfAbsentCommand, visitEvictCommand, visitGetAllCommand, visitGetCacheEntryCommand, visitGetKeyValueCommand, visitInvalidateCommand, visitInvalidateL1Command, visitIracPutKeyValueCommand, visitPrepareCommand, visitPutKeyValueCommand, visitPutMapCommand, visitReadOnlyKeyCommand, visitReadOnlyManyCommand, visitReadWriteKeyCommand, visitReadWriteKeyValueCommand, visitReadWriteManyCommand, visitReadWriteManyEntriesCommand, visitRemoveCommand, visitRemoveExpiredCommand, visitReplaceCommand, visitWriteOnlyKeyCommand, visitWriteOnlyKeyValueCommand, visitWriteOnlyManyCommand, visitWriteOnlyManyEntriesCommand, wrapEntriesForPrepareAndApply, wrapEntryIfNeededMethods inherited from class org.infinispan.interceptors.DDAsyncInterceptor
handleDefault, visitCommand, visitEntrySetCommand, visitKeySetCommand, visitLockControlCommand, visitRollbackCommand, visitSizeCommand, visitTouchCommand, visitUnknownCommandMethods inherited from class org.infinispan.interceptors.BaseAsyncInterceptor
asyncInvokeNext, asyncInvokeNext, asyncInvokeNext, asyncValue, delayedNull, delayedValue, delayedValue, invokeNext, invokeNextAndExceptionally, invokeNextAndFinally, invokeNextAndHandle, invokeNextThenAccept, invokeNextThenApply, isSuccessfullyDone, makeStage, setNextInterceptor, valueOrException
-
Constructor Details
-
RetryingEntryWrappingInterceptor
public RetryingEntryWrappingInterceptor()
-
-
Method Details
-
setSkipRemoteGetsAndInvokeNextForDataCommand
protected Object setSkipRemoteGetsAndInvokeNextForDataCommand(InvocationContext ctx, DataWriteCommand command, CompletionStage<Void> delay) Description copied from class:EntryWrappingInterceptorLocks the value for the keys accessed by the command to avoid being override from a remote get.- Overrides:
setSkipRemoteGetsAndInvokeNextForDataCommandin classEntryWrappingInterceptor
-
setSkipRemoteGetsAndInvokeNextForManyEntriesCommand
protected Object setSkipRemoteGetsAndInvokeNextForManyEntriesCommand(InvocationContext ctx, WriteCommand command, CompletionStage<Void> delay) Description copied from class:EntryWrappingInterceptorLocks the value for the keys accessed by the command to avoid being override from a remote get.- Overrides:
setSkipRemoteGetsAndInvokeNextForManyEntriesCommandin classEntryWrappingInterceptor
-