IGNITE-10278: MVCC: Checkpoint read lock must be acquired before calling MvccProcessor.updateState. This closes #5401.
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
index 3e47ede..da965f8 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
@@ -2250,6 +2250,8 @@
                             break;
 
                         case MVCC_TX_RECORD:
+                            checkpointReadLock();
+
                             try {
                                 MvccTxRecord txRecord = (MvccTxRecord)rec;
 
@@ -2260,6 +2262,9 @@
                             catch (IgniteCheckedException e) {
                                 throw new IgniteException(e);
                             }
+                            finally {
+                                checkpointReadUnlock();
+                            }
 
                             break;