Package org.infinispan.commands.write
Class IracPutKeyValueCommand
java.lang.Object
org.infinispan.commands.read.AbstractDataCommand
org.infinispan.commands.write.AbstractDataWriteCommand
org.infinispan.commands.write.IracPutKeyValueCommand
- All Implemented Interfaces:
DataCommand,FlagAffectedCommand,MetadataAwareCommand,ReplicableCommand,SegmentSpecificCommand,TopologyAffectedCommand,VisitableCommand,DataWriteCommand,WriteCommand,RemoteLockCommand
public class IracPutKeyValueCommand
extends AbstractDataWriteCommand
implements MetadataAwareCommand
A
WriteCommand used to handle updates from the remote site (for asynchronous cross-site replication).
Asynchronous cross-site replication may originate conflicts and this command allows to change its value based on the
user's XSiteEntryMergePolicy installed. The value (and metadata) can change until the command reaches the end
of the AsyncInterceptorChain, where the CallInterceptor checks its state and updates or removes the
key.
Note, this command is non-transactional, even for transactional caches. This simplifies the conflict resolution.
- Since:
- 12.0
- Author:
- Pedro Ruivo
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.infinispan.commands.VisitableCommand
VisitableCommand.LoadType -
Field Summary
FieldsFields inherited from class org.infinispan.commands.write.AbstractDataWriteCommand
commandInvocationIdFields inherited from class org.infinispan.commands.read.AbstractDataCommand
key, segment -
Constructor Summary
ConstructorsConstructorDescriptionIracPutKeyValueCommand(Object key, int segment, CommandInvocationId commandInvocationId, Object value, Metadata metadata, PrivateMetadata privateMetadata) -
Method Summary
Modifier and TypeMethodDescriptionacceptVisitor(InvocationContext ctx, Visitor visitor) Accept a visitor, and return the result of accepting this visitor.createSiteEntry(String site) Creates theSiteEntryto be used inXSiteEntryMergePolicy.booleanvoidfail()Make subsequent invocations ofWriteCommand.isSuccessful()returnfalse.byteUsed by marshallers to convert this command into an id for streaming.Get metadata of this command.getValue()inthashCode()booleanCertain commands only work based on a certain condition or state of the cache.booleanbooleanisRemove()booleanSome commands may want to provide information on whether the command was successful or not.loadType()voidreadFrom(ObjectInput input) Reads this instance from the stream written byReplicableCommand.writeTo(ObjectOutput).voidsetExpiration(boolean expiration) voidsetInternalMetadata(Object key, PrivateMetadata internalMetadata) voidsetInternalMetadata(PrivateMetadata internalMetadata) voidsetMetadata(Metadata metadata) Sets metadata for this command.voidsetValueMatcher(ValueMatcher valueMatcher) toString()voidupdateCommand(SiteEntry<Object> siteEntry) Updates this command state with the result ofXSiteEntryMergePolicy.merge(Object, SiteEntry, SiteEntry).voidwriteTo(ObjectOutput output) Writes this instance to theObjectOutput.Methods inherited from class org.infinispan.commands.write.AbstractDataWriteCommand
getAffectedKeys, getCommandInvocationId, getKeyLockOwner, getKeysToLock, hasSkipLocking, hasZeroLockAcquisition, isReturnValueExpectedMethods inherited from class org.infinispan.commands.read.AbstractDataCommand
getFlagsBitSet, getKey, getSegment, getTopologyId, printFlags, setFlagsBitSet, setKey, setTopologyIdMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.infinispan.commands.DataCommand
getKeyMethods inherited from interface org.infinispan.commands.FlagAffectedCommand
addFlag, addFlags, addFlags, getFlags, getFlagsBitSet, hasAllFlags, hasAnyFlag, hasFlag, setFlags, setFlagsBitSetMethods inherited from interface org.infinispan.commands.ReplicableCommand
canBlock, invoke, invokeAsync, logThrowable, setOriginMethods inherited from interface org.infinispan.commands.SegmentSpecificCommand
getSegmentMethods inherited from interface org.infinispan.commands.TopologyAffectedCommand
getTopologyId, setTopologyIdMethods inherited from interface org.infinispan.commands.VisitableCommand
initMethods inherited from interface org.infinispan.commands.write.WriteCommand
isWriteOnly, updateStatusFromRemoteResponse
-
Field Details
-
COMMAND_ID
public static final byte COMMAND_ID- See Also:
-
-
Constructor Details
-
IracPutKeyValueCommand
public IracPutKeyValueCommand() -
IracPutKeyValueCommand
public IracPutKeyValueCommand(Object key, int segment, CommandInvocationId commandInvocationId, Object value, Metadata metadata, PrivateMetadata privateMetadata)
-
-
Method Details
-
getInternalMetadata
- Specified by:
getInternalMetadatain interfaceDataWriteCommand
-
setInternalMetadata
- Specified by:
setInternalMetadatain interfaceDataWriteCommand
-
getInternalMetadata
- Specified by:
getInternalMetadatain interfaceDataWriteCommand- Specified by:
getInternalMetadatain interfaceWriteCommand
-
setInternalMetadata
- Specified by:
setInternalMetadatain interfaceDataWriteCommand- Specified by:
setInternalMetadatain interfaceWriteCommand
-
getCommandId
public byte getCommandId()Description copied from interface:ReplicableCommandUsed by marshallers to convert this command into an id for streaming.- Specified by:
getCommandIdin interfaceReplicableCommand- Returns:
- the method id of this command. This is compatible with pre-2.2.0 MethodCall ids.
-
isSuccessful
public boolean isSuccessful()Description copied from interface:WriteCommandSome commands may want to provide information on whether the command was successful or not. This is different from a failure, which usually would result in an exception being thrown. An example is a putIfAbsent() not doing anything because the key in question was present. This would result in a isSuccessful() call returning false.- Specified by:
isSuccessfulin interfaceReplicableCommand- Specified by:
isSuccessfulin interfaceWriteCommand- Returns:
- true if the command completed successfully, false otherwise.
-
isConditional
public boolean isConditional()Description copied from interface:WriteCommandCertain commands only work based on a certain condition or state of the cache. For example,ConcurrentMap.putIfAbsent(Object, Object)only does anything if a condition is met, i.e., the entry in question is not already present. This method tests whether the command in question is conditional or not.- Specified by:
isConditionalin interfaceWriteCommand- Returns:
- true if the command is conditional, false otherwise
-
getValueMatcher
- Specified by:
getValueMatcherin interfaceWriteCommand- Returns:
- The current value matching policy.
-
setValueMatcher
- Specified by:
setValueMatcherin interfaceWriteCommand- Parameters:
valueMatcher- The new value matching policy.
-
fail
public void fail()Description copied from interface:WriteCommandMake subsequent invocations ofWriteCommand.isSuccessful()returnfalse.- Specified by:
failin interfaceWriteCommand
-
acceptVisitor
Description copied from interface:VisitableCommandAccept a visitor, and return the result of accepting this visitor.- Specified by:
acceptVisitorin interfaceVisitableCommand- Parameters:
ctx- invocation contextvisitor- visitor to accept- Returns:
- arbitrary return value
- Throws:
Throwable- in the event of problems
-
loadType
- Specified by:
loadTypein interfaceVisitableCommand- Returns:
- Nodes on which the command needs to read the previous values of the keys it acts on.
-
getMetadata
Description copied from interface:MetadataAwareCommandGet metadata of this command.- Specified by:
getMetadatain interfaceMetadataAwareCommand- Returns:
- an instance of Metadata
-
setMetadata
Description copied from interface:MetadataAwareCommandSets metadata for this command.- Specified by:
setMetadatain interfaceMetadataAwareCommand
-
getValue
-
isRemove
public boolean isRemove()- Returns:
trueif this command state is a removal operation,falseotherwise.
-
createSiteEntry
Creates theSiteEntryto be used inXSiteEntryMergePolicy.- Parameters:
site- The remote site name.- Returns:
- The
SiteEntry.
-
updateCommand
Updates this command state with the result ofXSiteEntryMergePolicy.merge(Object, SiteEntry, SiteEntry).- Parameters:
siteEntry- The resolvedSiteEntry.
-
writeTo
Description copied from interface:ReplicableCommandWrites this instance to theObjectOutput.- Specified by:
writeToin interfaceReplicableCommand- Parameters:
output- the stream.- Throws:
IOException- if an error occurred during the I/O.
-
readFrom
Description copied from interface:ReplicableCommandReads this instance from the stream written byReplicableCommand.writeTo(ObjectOutput).- Specified by:
readFromin interfaceReplicableCommand- Parameters:
input- the stream to read.- Throws:
IOException- if an error occurred during the I/O.ClassNotFoundException- if it tries to load an undefined class.
-
isExpiration
public boolean isExpiration() -
setExpiration
public void setExpiration(boolean expiration) -
equals
- Overrides:
equalsin classAbstractDataCommand
-
hashCode
public int hashCode()- Overrides:
hashCodein classAbstractDataCommand
-
toString
- Overrides:
toStringin classAbstractDataCommand
-