
org.infinispan.container.entries.MVCCEntry Maven / Gradle / Ivy
package org.infinispan.container.entries;
import org.infinispan.container.DataContainer;
/**
* An entry that can be safely copied when updates are made, to provide MVCC semantics
*
* @author Manik Surtani
* @since 4.0
*/
public interface MVCCEntry extends CacheEntry, StateChangingEntry {
/**
* @deprecated Since 8.0, use {@link #copyForUpdate()} instead.
*/
@Deprecated
default void copyForUpdate(DataContainer super K, ? super V> container) {}
/**
* Makes internal copies of the entry for updates
*
* @deprecated since 9.0 noop
*/
@Deprecated
default void copyForUpdate() {}
void setChanged(boolean isChanged);
/**
* Marks this entry as being expired. This is a special form of removal.
* @param expired whether or not this entry should be expired
*/
void setExpired(boolean expired);
/**
* Returns whether this entry was marked as being expired or not
* @return whether expired has been set
*/
boolean isExpired();
/**
* Reset the current value of the entry to the value before the commmand was executed the first time.
* This is invoked before the command is retried.
*/
void resetCurrentValue();
/**
* Update the previous value of the entry - set it to current value. This is invoked when the command
* is successfuly finished (there won't be any more retries) or when the value was updated from external
* source.
*/
void updatePreviousValue();
/**
* Mark that this entry was loaded from the cache (as opposed to generated by the application
* using write-only command), mostly for purposes of the write skew check.
*
* Replaces {@link org.infinispan.transaction.xa.CacheTransaction#addReadKey(Object)}.
*/
default void setRead() {}
/**
* Check is this entry as loaded from the cache (as opposed to generated by the application
* using write-only command), mostly for purposes of the write skew check.
*
* Replaces {@link org.infinispan.transaction.xa.CacheTransaction#keyRead(Object)}.
*/
default boolean isRead() {
return false;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy