Enum CacheAtomicityMode
- java.lang.Object
-
- java.lang.Enum<CacheAtomicityMode>
-
- org.apache.ignite.cache.CacheAtomicityMode
-
- All Implemented Interfaces:
Serializable
,Comparable<CacheAtomicityMode>
public enum CacheAtomicityMode extends Enum<CacheAtomicityMode>
Cache atomicity mode controls whether cache should maintain fully transactional semantics or more light-weight atomic behavior. It is recommended thatATOMIC
mode is used whenever transactions and explicit locking are not needed. Note that inATOMIC
mode cache will still maintain full data consistency across all cache nodes.Cache atomicity may be set via
CacheConfiguration.getAtomicityMode()
configuration property.
-
-
Enum Constant Summary
Enum Constants Enum Constant Description ATOMIC
Specifies atomic-only cache behaviour.TRANSACTIONAL
Enables fullyACID
-compliant transactional cache behavior for the key-value API.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static @Nullable CacheAtomicityMode
fromOrdinal(int ord)
Efficiently gets enumerated value from its ordinal.static CacheAtomicityMode
valueOf(String name)
Returns the enum constant of this type with the specified name.static CacheAtomicityMode[]
values()
Returns an array containing the constants of this enum type, in the order they are declared.
-
-
-
Enum Constant Detail
-
TRANSACTIONAL
public static final CacheAtomicityMode TRANSACTIONAL
Enables fullyACID
-compliant transactional cache behavior for the key-value API.See
Transaction
for more information about transactions.
-
ATOMIC
public static final CacheAtomicityMode ATOMIC
Specifies atomic-only cache behaviour. In this mode distributed transactions and distributed locking are not supported. Disabling transactions and locking allows to achieve much higher performance and throughput ratios.In addition to transactions and locking, one of the main differences in
ATOMIC
mode is that bulk writes, such asputAll(...)
,removeAll(...)
, andtransformAll(...)
methods, become simple batch operations which can partially fail. In case of partial failureCachePartialUpdateException
will be thrown which will contain a list of keys for which the update failed. It is recommended that bulk writes are used whenever multiple keys need to be inserted or updated in cache, as they reduce number of network trips and provide better performance.Note that even without locking and transactions,
ATOMIC
mode makes best effort to provide full consistency guarantees across all cache nodes. However, in following scenarios (but not limited to) full consistency is not possible andTRANSACTIONAL
mode should be used or custom defined recovery logic should be applied to restore data consistency:- Node that originated update has left together with at least one primary node for this update operation, and left primary node has not finished update propagation to all nodes holding backup partitions. This way backup copies may differ. And also if persistent store is configured it may come to an inconsistent state as well.
-
If update originating node is alive then update is retried by default and for operations
put(...)
,putAll(...)
,remove(K, V)
andremoveAll(Set<K>)
all copies of partitions will come to a consistent state. -
If
EntryProcessor
is used and processor is not idempotent then failure of primary node may result in applying the same processor on next chosen primary which may have already been updated within current operation. If processor is not idempotent it is recommended to disable automatic retries and manually restore consistency between key-value copies in case of update failure. -
For operations
putIfAbsent(K, V)
,replace(K, V, V)
andremove(K, V)
return value on primary node crash may be incorrect because of the automatic retries. It is recommended to disable retries withIgniteCache.withNoRetries()
and manually restore primary-backup consistency in case of update failure.
Also note that all data modifications in
ATOMIC
mode are guaranteed to be atomic and consistent with writes to the underlying persistent store, if one is configured.Note! Consistency behavior of atomic cache will be improved in future releases.
- See Also:
IgniteCache.withNoRetries()
-
-
Method Detail
-
values
public static CacheAtomicityMode[] values()
Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:for (CacheAtomicityMode c : CacheAtomicityMode.values()) System.out.println(c);
- Returns:
- an array containing the constants of this enum type, in the order they are declared
-
valueOf
public static CacheAtomicityMode valueOf(String name)
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)- Parameters:
name
- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException
- if this enum type has no constant with the specified nameNullPointerException
- if the argument is null
-
fromOrdinal
@Nullable public static @Nullable CacheAtomicityMode fromOrdinal(int ord)
Efficiently gets enumerated value from its ordinal.- Parameters:
ord
- Ordinal value.- Returns:
- Enumerated value or
null
if ordinal out of range.
-
-