Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
77be76c
IGNITE-13510 Added snapshot status command to control.sh and JMX. (#1…
NSAmelchev Aug 18, 2022
728c2df
IGNITE-17190 Move ignite query statistics to core, fix SQL ANALYZE co…
ivandasch Aug 19, 2022
9f55629
IGNITE-17542 Fixed an issue with modifying CacheAffinityChangeMessage…
sk0x50 Aug 22, 2022
cc0d179
IGNITE-17565 Update Ignite dependency: jodd-lagarto (#10209)
nao-it Aug 23, 2022
e11ae34
IGNITE-15455 SQL Calcite: Add support for statistics sql commands (#1…
ivandasch Aug 24, 2022
5102d1d
IGNITE-17559 .NET: Fix TestCopyToInvalidArguments on Windows (#10206)
ptupitsyn Aug 22, 2022
3c73373
IGNITE-17432 Remove MaxPermSize option from ignitevisorcmd to provide…
liyuj Aug 24, 2022
35688da
IGNITE-17299 .NET: Fix StringComparer serialization (#10214)
ptupitsyn Aug 25, 2022
5a59c22
IGNITE-12852 SQL command COPY: fix parsing quoted delimiters in CSV f…
antkr Aug 25, 2022
079c528
IGNITE-17556 Ignite doc: Wrong use of setValueFields function in Cach…
liyuj Aug 25, 2022
6f676ad
IGNITE-17112 Consistency check must fix counter after the consistency…
anton-vinogradov Aug 25, 2022
98670f4
IGNITE-17191 Consistency check should support cacheGroup as a param a…
anton-vinogradov Aug 26, 2022
091957d
IGNITE-17537 Make units of 'timeout' and 'duration' more explicit in …
J-Bakuli Aug 26, 2022
7b8a53f
IGNITE-17584 [ducktests] Allow time units in the control.sh transacti…
skorotkov Aug 29, 2022
d4e7dc6
IGNITE-17481 Fixed a workaround for PermGen leak that stopped working…
ibessonov Aug 26, 2022
3676d33
IGNITE-17576 Update mysql-connector-java dependency to 8.0.30 (#10223)
J-Bakuli Aug 31, 2022
bdd7cfb
IGNITE-13726 Add system view for count of hot/cold pages in page-memo…
alex-plekhanov Aug 31, 2022
a8f536b
IGNITE-17552 Fixed an issue where the snapshot error was not propagat…
xtern Aug 30, 2022
150f2c2
IGNITE-17587 Fixed the "io.datastorage.StorageSize" metric in case of…
NSAmelchev Aug 31, 2022
00842a7
IGNITE-16136 Fix deadlock on system thread pool during marshaller map…
Mmuzaf Aug 31, 2022
8271fb5
IGNITE-15424 Move query schema management infrastructure to the core …
alex-plekhanov Sep 1, 2022
fe05c2d
IGNITE-17600 Fix documentation of control.sh indexes_force_rebuild ta…
nao-it Sep 1, 2022
1b0e8d9
IGNITE-17499 Fixed propagation of service call exception stacktrace t…
petrov-mg Aug 31, 2022
53709b4
IGNITE-17597 SQL Calcite: Fix indexes registration after add/drop col…
alex-plekhanov Sep 2, 2022
c8b1ca7
IGNITE-15862 fix node k8s config.xml (#10232)
nao-it Sep 2, 2022
c544600
IGNITE-17617 Fixed NPE in the snapshot restore status command on clie…
NSAmelchev Sep 3, 2022
17ff4b2
IGNITE-17619 Documentation: add a performance statistics report examp…
NSAmelchev Sep 4, 2022
f26f784
IGNITE-17618 Update jackson dependency to 2.12.7 - Fixes #10235.
nao-it Sep 5, 2022
0a7a446
IGNITE-17635 Fix checkpoint locks count by current thread after lock …
alex-plekhanov Sep 6, 2022
cd6baa1
IGNITE-17108 Update Docker deliveries (#10070)
vveider Sep 7, 2022
b0f86ae
IGNITE-17656 Fix race condition between concurrent updates of remaini…
timoninmaxim Sep 9, 2022
83b46a9
Update release branch version for 2.14
Sep 9, 2022
e91161a
IGNITE-17661 Update packages version to 2.14 (#10245)
tledkov Sep 9, 2022
e82f0d6
IGNITE-17651 Update Apache Ignite 2.14 release notes (#10244)
tledkov Sep 9, 2022
a0a38be
IGNITE-17541 Thin client: add spring compatible setter for "send stac…
J-Bakuli Sep 12, 2022
ab3b948
IGNITE-17674 Document Kafka to thin client CDC streamer (#10249)
NSAmelchev Sep 13, 2022
a5fae73
IGNITE-17668 Fix removing archive WAL segments for in-memory CDC mode…
nizhikov Sep 14, 2022
4df74d9
IGNITE-17675 Fixed file resources leak on cluster deactivation/stop i…
NSAmelchev Sep 14, 2022
31324c5
IGNITE-17679 Consistency check/repair and Read Repair documentation u…
anton-vinogradov Sep 20, 2022
8785380
IGNITE-17764 Fix performance drop on index find operation - Fixes #10…
alex-plekhanov Sep 27, 2022
951e8de
IGNITE-17717 Fix APP_ID for Log4j2Logger (#10275)
nizhikov Sep 29, 2022
147c4b4
IGNITE-24264 Replace Google Analytics with Matomo (#11927)
niallkp Mar 17, 2025
6964a16
IGNITE-28581 Fixed performance statistics documentation images (#13051)
chesnokoff Apr 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
114 changes: 114 additions & 0 deletions RELEASE_NOTES.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,120 @@
Apache Ignite Release Notes
===========================

Apache Ignite In-Memory Distributed Database 2.14.0
-----------------------------------------------------------

(!) WARNINGS:
* Removed LOCAL caches support.
* Removed scalar module.

Ignite:
* Added CDC binary meta change events.
* Added a control.sh command that schedules index rebuild via the maintenance mode.
* Added a pluggable affinity mapping function for the partition awareness usage.
* Added a snapshot creation operation metrics.
* Added a snapshot status command to control.sh and JMX.
* Added a user info to the sql queries view.
* Added an opportunity to specify a single partition for IndexQuery.
* Added cache change events for CDCConsumer.
* Added cache metrics command for Control Script.
* Added support of optional beans for SpringResource annotation injection.
* Added system view and histogram to show the distribution of hot and cold pages in the page memory.
* Added the ability to define a custom path for the snapshot operation.
* Added the ability to intercept calls to service methods.
* Fixed 'Integer value is out of bounds' issue when the dataregion maxSize is large enough.
* Fixed 'Invalid cross-device link error' when extending WAL segments size.
* Fixed ClassCastException that appears during deployment manager stop in Java versions 11.0.16+ and 17.0.4+.
* Fixed an issue that caused inconsistent keys after deletion during rebalance.
* Fixed an issue that could lead to a block of the management pool in case of using clearSync.
* Fixed an issue that could lead to unexpected partition map exchange on client nodes.
* Fixed an issue where the snapshot error was not propagated to the initiating node.
* Fixed an issue with potential node failure during the cancellation of computing jobs with cache operations.
* Fixed applying expiration to CDC-replicated cache entries.
* Fixed asynchronous operation permits overflow for explicit transaction with single write entry.
* Fixed durable background task start on BLT node joined to the active cluster.
* Fixed idle_verify command of control.sh utility.
* Fixed incorrect node hostname resolution despite IP is configured with IGNITE_LOCAL_HOST.
* Fixed incorrect params of GridCacheManager#stop method.
* Fixed node resolving stale addresses from previously restarted and killed nodes.
* Fixed nofication for node start event.
* Fixed partition update counter tracking after the node restart.
* Fixed potential deadlock in transactions recovery on node failure.
* Fixed propagation of a service call exception stacktrace to the client side.
* Fixed race condition in GridNioServer.
* Fixed server-side message parsing for big messages from thin clients.
* Fixed tasks for sending snapshot files.
* Fixed the "io.datastorage.StorageSize" metrics in case of multiple persistence data regions.
* Fixed the move of remote partition files during snapshot restore operations.
* Fixed the run of ignitevisorcmd in JDK 17 environment.
* Fixed writing of an empty binary object.
* Fixed wrong checkpoint locks count calculation after lock timeout (wrong calculation leads to node failure in some cases).
* Improved REST commands: skip authorization for 'Probe' and 'Version' commands.
* Improved `--consistency repair` command of the control.sh utility; Read Repair now supports arrays and collections as values.
* Improved `--consistency repair` command of the control.sh utility; Read Repair now supports binary keys.
* Improved `--consistency repair` command of the control.sh utility; atomic caches can now be repaired by Read Repair.
* Improved behavior of the speed-based throttling when a dirty-page ratio is low.
* Improved consistency check, it now supports cacheGroup as a param as well.
* Improved consistency check, it's now able to fix counters.
* Improved index-reader.sh utility: add free size calculation.
* Improved index-reader.sh utility: analyze and output information about the actual usage of inline space in the index.
* Improved index-reader.sh utility: exclude repeated stack traces.
* Improved inline size adjustment for fixed size index items.
* Improved logging levels for situations when dealing with a client node.
* Improved registered service name lookup performance and reduced service shutdown time.
* Improved service name lookup performance and reduced service startup time.
* Improved speed of the index-reader.sh utility.
* Moved ignite-cloud IP Finder to the Ignite Extensions project.
* Moved ignite-mesos to the Ignite Extensions project.
* Moved ignite-spark modules to the Ignite Extensions project.
* Moved ignite-yarn to the Ignite Extensions project.
* Moved inigte-aop module to the Ignite Extensions project.
* Removed deprecated log4j 1.x module.
* Update Tomcat Servlet API dependency version to 9.0.63.
* Update jsonpath dependency to 2.7.0.
* Updated Jackson Databind dependency to 2.12.7 (CVE-2020-36518).
* Updated Jetty dependency to 9.4.43.
* Updated Lucene library version to 8.11.2.
* Updated Spring dependency to 5.2.22.
* Updated the MySql connector dependency version (fixes CVE-2021-2471, CVE-2022-21363).

Java thin client:
* Added AtomicLong.
* Added IgniteSet.
* Added automatic binary configuration. Name mapper and compact footer settings will be set according to cluster configuration.
* Added partition awareness to AtomicLong - send network requests directly to the primary node for the given instance.
* Added support of IndexQuery feature in Java thin client.
* Fixed an issue that caused addresses not to be reloaded from ClientAddressFinder on connection loss.
* Fixed hang on client startup when deprecated TLS version is used.
* Fixed race condition and potential hang on client close.

JDBC:
* Fixed handling of BinaryObjectException on response to deserialization at the thin JDBC client
* Fixed parsing quoted delimiters in CSV fields content for SQL command COPY.

.Net thin client:
* Added AtomicLong.

.Net:
* Fixed ServiceCallContext access from async methods.
* Fixed StringComparer serialization.
* Fixed net461 release binaries.
* Improved Java detection on Linux.

C++ thin client:
* Added partition property to SqlFieldsQuery for C++ thin client.
* Added support ScanQuery for C++ thin client.
* Added user thread pool size to public configuration of the C++ thin client.

SQL:
* Added segmented indexes support for Calcite engine.
* Added support for IN criterion for IndexQuery: IndexQuery.setCriteria(in("A", Arrays.asList(1, 2 ,3))).
* Calcite-based SQL engine is now independent of H2-based SQL engine and doesn't require 'ignite-indexing' module and H2 to be in classpath anymore.
* Fixed incorrect query result if a subquery with a filter was used on the left shoulder of a LEFT JOIN.
* Fixed indexes registration after add/drop column for Calcite engine.
* Fixed insertion of values with java LocalDate, LocalTime and LocalDateTime types via SQL.
* Improved SQL calcite: use index count scan for COUNT(*).

Apache Ignite In-Memory Distributed Database 2.13.0
-----------------------------------------------------------

Expand Down
2 changes: 1 addition & 1 deletion bin/ignitevisorcmd.bat
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ if %ERRORLEVEL% neq 0 (
::
:: ADD YOUR/CHANGE ADDITIONAL OPTIONS HERE
::
if "%JVM_OPTS_VISOR%" == "" set JVM_OPTS_VISOR=-Xms1g -Xmx1g -XX:MaxPermSize=128M
if "%JVM_OPTS_VISOR%" == "" set JVM_OPTS_VISOR=-Xms1g -Xmx1g

::
:: Uncomment to set preference to IPv4 stack.
Expand Down
2 changes: 1 addition & 1 deletion bin/ignitevisorcmd.sh
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ CP="${IGNITE_HOME}/bin/include/visor-common/*${SEP}${IGNITE_HOME}/bin/include/vi
#
# ADD YOUR/CHANGE ADDITIONAL OPTIONS HERE
#
JVM_OPTS="-Xms1g -Xmx1g -XX:MaxPermSize=128M -server ${JVM_OPTS}"
JVM_OPTS="-Xms1g -Xmx1g -server ${JVM_OPTS}"

# Mac OS specific support to display correct name in the dock.
osname=`uname`
Expand Down
6 changes: 4 additions & 2 deletions deliveries/docker/apache-ignite/x86_64/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@
# limitations under the License.
#

# Start from Java 8 based on Alpine Linux image (~5Mb)
FROM openjdk:8-jre-alpine
# Start from Java 8 based on Alpine Linux image
ARG JDK_VERSION=8
FROM eclipse-temurin:${JDK_VERSION}-jre-alpine

# Settings
ENV IGNITE_HOME /opt/ignite/apache-ignite
Expand Down Expand Up @@ -46,3 +47,4 @@ CMD $IGNITE_HOME/run.sh

# Container port exposure
EXPOSE 11211 47100 47500 49112 10800 8080

2 changes: 1 addition & 1 deletion docs/_data/toc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@
- title: Using Cache Queries
url: key-value-api/using-cache-queries
- title: Read Repair
url: read-repair
url: key-value-api/read-repair
- title: Performing Transactions
url: key-value-api/transactions
- title: Working with SQL
Expand Down
2 changes: 0 additions & 2 deletions docs/_docs/SQL/sql-calcite.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@ CAUTION: The Calcite-based query engine is currently in beta status.

To use a Calcite-based engine, please make sure that the Calcite module libraries are in a classpath.

CAUTION: Currently, a part of the `ignite-indexing` module functionality is reused, this means the `ignite-indexing` module also has to be present at classpath.

=== Standalone Mode

When starting a standalone node, move `optional/ignite-calcite` folder to the `libs` folder before running `ignite.{sh|bat}` script. In this case, the content of the module folder is added to the classpath.
Expand Down
2 changes: 1 addition & 1 deletion docs/_docs/clustering/connect-client-nodes.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ There are two discovery events that are triggered on the client node when it is
* `EVT_CLIENT_NODE_RECONNECTED`

You can listen to these events and execute custom actions in response.
Refer to the link:events/listening-to-events[Listening to events] section for a code example.
Please, refer to the link:events/listening-to-events[Listening to events] section for a code example.

== Managing Slow Client Nodes

Expand Down
2 changes: 1 addition & 1 deletion docs/_docs/code-snippets/java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<version>1.0.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<ignite.version>2.13.0-SNAPSHOT</ignite.version>
<ignite.version>2.14.0</ignite.version>
</properties>
<dependencies>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,10 @@ void readRepair() {

try (Ignite ignite = Ignition.start()) {
//tag::read-repair[]
IgniteCache<Object, Object> cache = ignite.cache("my_cache").withReadRepair();
IgniteCache<Object, Object> cache =
ignite.cache("my_cache").withReadRepair(ReadRepairStrategy.CHECK_ONLY);

Object value = cache.get(10);
Object value = cache.get(42);
//end::read-repair[]
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,9 @@ public static void cacheJdbcPojoStoreExample() {

personType.setKeyFields(new JdbcTypeField(java.sql.Types.INTEGER, "id", Integer.class, "id"));

personType.setValueFields(new JdbcTypeField(java.sql.Types.INTEGER, "id", Integer.class, "id"));
personType.setValueFields(new JdbcTypeField(java.sql.Types.VARCHAR, "name", String.class, "name"));
personType.setValueFields(
new JdbcTypeField(java.sql.Types.INTEGER, "id", Integer.class, "id"),
new JdbcTypeField(java.sql.Types.VARCHAR, "name", String.class, "name"));

factory.setTypes(personType);

Expand Down
4 changes: 2 additions & 2 deletions docs/_docs/code-snippets/k8s/stateful/node-configuration.xml
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.kubernetes.TcpDiscoveryKubernetesIpFinder">
<constructor-arg>
<bean class="org.apache.ignite.kubernetes.configuration.KubernetesConnectionConfiguration">
<property name="namespace" value="default" />
<property name="serviceName" value="ignite" />
<property name="namespace" value="ignite" />
<property name="serviceName" value="ignite-service" />
</bean>
</constructor-arg>
</bean>
Expand Down
4 changes: 2 additions & 2 deletions docs/_docs/code-snippets/k8s/stateless/node-configuration.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.kubernetes.TcpDiscoveryKubernetesIpFinder">
<constructor-arg>
<bean class="org.apache.ignite.kubernetes.configuration.KubernetesConnectionConfiguration">
<property name="namespace" value="default" />
<property name="serviceName" value="ignite" />
<property name="namespace" value="ignite" />
<property name="serviceName" value="ignite-service" />
</bean>
</constructor-arg>
</bean>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,9 +148,11 @@ NOTE: Please, enable `ignite-cdc-ext` to be able to run `kafka-to-ignite.sh`.
==== Configuration

Application configuration should be done using POJO classes or Spring xml file like regular Ignite node configuration.
Kafka to ignite configuration file should contain the following beans that will be loaded during startup:
Kafka to Ignite configuration file should contain the following beans that will be loaded during startup:

. `IgniteConfiguration` bean: Configuration of the client node that will connect to the destination cluster.
. One of the configuration beans to define a client type that will connect to the destination cluster:
- `IgniteConfiguration` bean: Configuration of a client node.
- `ClientConfiguration` bean: Configuration of a link:thin-clients/java-thin-client[Java Thin Client].
. `java.util.Properties` bean with the name `kafkaProperties`: Single Kafka consumer configuration.
. `org.apache.ignite.cdc.kafka.KafkaToIgniteCdcStreamerConfiguration` bean: Options specific to `kafka-to-ignite.sh` application.

Expand Down
18 changes: 18 additions & 0 deletions docs/_docs/extensions-and-integrations/performance-statistics.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,24 @@ For more details run the help command:
performance-statistics-tool/build-report.sh --help
----

=== Performance Statistics Report Example

:perf_stat_url: images/integrations/performance-statistics

[tabs]
--
tab:Cache operations[]
image:{perf_stat_url}/perf_stat_2.jpg[Cache operations report]
tab:Transactions[]
image:{perf_stat_url}/perf_stat_3.jpg[Transactions report]
tab:Queries[]
image:{perf_stat_url}/perf_stat_4.jpg[Queries report]
tab:Compute[]
image:{perf_stat_url}/perf_stat_5.jpg[Compute report]
tab:Cluster info[]
image:{perf_stat_url}/perf_stat_1.jpg[Cluster info report]
--

== Print Statistics

Ignite provides a tool to print statistics to a console or to a file in JSON format.
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
99 changes: 99 additions & 0 deletions docs/_docs/key-value-api/read-repair.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You under the Apache License, Version 2.0
// (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
= Read Repair

WARNING: Experimental API

[WARNING]
====
[discrete]
=== Limitations
A consistency check is incompatible with the following cache configurations:

* Caches without backups.
* Near caches.
* Caches that use "read-through" mode.
====


`Read Repair` refers to a technique of repairing inconsistencies between primary and backup copies of data during normal read operations. When a specific key (or keys) is read by a user operation, Ignite checks the values for the given key in all backup copies.

The `Read Repair` mode is designed to maintain consistency. However, read operations become {tilde}2 times more costly because backup copies are checked in addition to the primary copy. It is generally not advisable to use this mode all the time, but rather on a once-in-a-while basis.

To enable the `Read Repair` mode, it is necessary to obtain an instance of the cache that enables Read Repair reads as follows:

[source, java]
----
include::{javaCodeDir}/BasicCacheOperations.java[tags=read-repair, indent=0]
----

== Strategies
In case consistency violations were found, the values across the topology will be replaced by repaired values according to the chosen strategy:

[cols="1,4",opts="header"]
|===
| Strategy | Description
| `LWW` a| Last write (the newest entry) wins.

May cause IgniteException when the fix is impossible (unable to detect the newest entry)::
* Null(s) found as well as non-null values for the same key. Null (missed entry) has no version, so, it can not be compared with the versioned entry.
* Entries with the same version have different values.
| `PRIMARY` | Value from the primary node wins.
| `RELATIVE_MAJORITY` a| The relative majority, any value found more times than any other wins.
Works for an even number of copies (which is typical of Ignite) instead of an absolute majority.

May cause IgniteException when it is unable to detect values found more times than any other.

For example, when 5 copies (4 backups) are given::
* and value `A` found twice, but `X`, `Y` and `Z` only once, `A` wins,
* but, when `A` is found twice, as well as `B`, and `X` only once, the strategy is unable to determine the winner.

When 4 copies (3 backups) are given, any value found two or more times, when others are found only once, is the winner.
| `REMOVE` | Inconsistent entries will be removed.
| `CHECK_ONLY` | Only check will be performed.
|===

== Events
link:https://ignite.apache.org/releases/{version}/javadoc/org/apache/ignite/events/EventType.html#EVT_CONSISTENCY_VIOLATION[Сonsistency Violation Event] will be recorded for each violation in case it's configured as recordable. You may listen to this event to get notified about inconsistency issues.

Please, refer to the link:events/listening-to-events[Working with Events] section for the information on how to listen to events.

== Transactional Caches
Values will be repaired::
* automatically for transactions that have `TransactionConcurrency.OPTIMISTIC` concurrency mode or `TransactionIsolation.READ_COMMITTED` isolation level,

* at commit() phase for transactions that have `TransactionConcurrency.PESSIMISTIC` concurrency mode and isolation level other than `TransactionIsolation.READ_COMMITTED`

[WARNING]
====
[discrete]
=== Limitations
This proxy usage does not guarantee "all copies check" in case the value have been already cached inside the transaction.

In case you don't use a `READ_COMMITTED` isolation mode and already have a cached value, for example have already read the value or performed a write, you'll just get the cached value.
====

== Atomic Caches
Values will be repaired automatically.

[WARNING]
====
[discrete]
=== Limitations
Due to the nature of an atomic cache, false-positive results can be observed. For example, an attempt to check consistency under cache's loading may lead to a consistency violation exception.

By default, the implementation tries to check the given key three times. The number of attempts can be changed using `IgniteSystemProperties.IGNITE_NEAR_GET_MAX_REMAPS` property.
====

Loading
Loading