This is an automated email from the ASF dual-hosted git repository.

av pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 41b0fa192b7 IGNITE-20433 cctx.mvccEnabled() removal (#10938)
41b0fa192b7 is described below

commit 41b0fa192b7a77c7574fe2d03eed295cf6cc2471
Author: Anton Vinogradov <[email protected]>
AuthorDate: Wed Sep 20 21:54:42 2023 +0300

    IGNITE-20433 cctx.mvccEnabled() removal (#10938)
---
 .../query/calcite/exec/ddl/DdlCommandHandler.java  |   5 -
 .../query/index/sorted/inline/InlineIndexImpl.java |   4 +-
 .../management/cache/ValidateIndexesClosure.java   |  45 +-----
 .../management/cdc/CdcCacheDataResendTask.java     |   3 -
 .../managers/indexing/IndexesRebuildTask.java      |   4 +-
 .../cache/GatewayProtectedCacheProxy.java          |   8 -
 .../processors/cache/GridCacheAdapter.java         |  80 ++--------
 .../processors/cache/GridCacheContext.java         |  11 +-
 .../processors/cache/GridCacheEntryEx.java         |   5 -
 .../processors/cache/GridCacheMapEntry.java        | 173 +++------------------
 .../processors/cache/GridCacheProcessor.java       |   2 -
 .../internal/processors/cache/GridCacheUtils.java  |   3 +-
 .../processors/cache/IgniteCacheProxyImpl.java     |   4 -
 .../GridDistributedTxRemoteAdapter.java            |   2 +-
 .../cache/distributed/dht/GridDhtCacheAdapter.java |  30 +---
 .../cache/distributed/dht/GridDhtCacheEntry.java   |   5 +-
 .../cache/distributed/dht/GridDhtGetFuture.java    |  14 --
 .../distributed/dht/GridDhtGetSingleFuture.java    |  14 --
 .../cache/distributed/dht/GridDhtLockFuture.java   |  10 +-
 .../dht/GridDhtTxAbstractEnlistFuture.java         |   2 -
 .../distributed/dht/GridDhtTxFinishFuture.java     |   6 +-
 .../distributed/dht/GridDhtTxPrepareFuture.java    |  18 +--
 .../distributed/dht/GridPartitionedGetFuture.java  |  11 +-
 .../dht/GridPartitionedSingleGetFuture.java        |   7 +-
 .../dht/colocated/GridDhtColocatedCache.java       |  41 +----
 .../dht/preloader/GridDhtForceKeysFuture.java      |  12 +-
 .../near/GridNearPessimisticTxPrepareFuture.java   |  64 +++-----
 .../cache/distributed/near/GridNearTxLocal.java    | 129 +--------------
 .../near/GridNearTxPrepareFutureAdapter.java       |   2 +-
 .../processors/cache/mvcc/MvccProcessorImpl.java   |  10 +-
 .../internal/processors/cache/mvcc/MvccUtils.java  |  61 +-------
 .../query/GridCacheDistributedQueryManager.java    |   4 -
 .../cache/query/GridCacheQueryAdapter.java         |  17 +-
 .../cache/query/GridCacheQueryManager.java         |   2 -
 .../continuous/CacheContinuousQueryHandler.java    |  13 +-
 .../IgniteTxImplicitSingleStateImpl.java           |  10 +-
 .../cache/transactions/IgniteTxLocalAdapter.java   |  19 +--
 .../cache/transactions/IgniteTxManager.java        |   8 +-
 .../transactions/IgniteTxRemoteStateAdapter.java   |  10 +-
 .../cache/transactions/IgniteTxState.java          |   5 -
 .../cache/transactions/IgniteTxStateImpl.java      |  16 +-
 .../processors/cache/GridCacheTestEntryEx.java     |   6 -
 .../IgniteCacheFailedUpdateResponseTest.java       |   5 +-
 .../processors/query/h2/CommandProcessor.java      |   4 -
 .../internal/processors/query/h2/H2Utils.java      |  39 -----
 .../processors/query/h2/IgniteH2Indexing.java      |  91 ++---------
 .../query/h2/database/H2PkHashIndex.java           |   2 -
 .../processors/query/h2/database/H2TreeIndex.java  |   2 -
 .../query/h2/sql/GridSqlQueryParser.java           |   3 -
 .../query/h2/sql/GridSqlQuerySplitter.java         |   4 +-
 .../Cache/CachePartitionedTest.cs                  |  34 ----
 51 files changed, 135 insertions(+), 944 deletions(-)

diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ddl/DdlCommandHandler.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ddl/DdlCommandHandler.java
index 3a6b00c8fa1..e7c268d8918 100644
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ddl/DdlCommandHandler.java
+++ 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ddl/DdlCommandHandler.java
@@ -277,11 +277,6 @@ public class DdlCommandHandler {
 
             assert cctx != null;
 
-            if (cctx.mvccEnabled()) {
-                throw new IgniteSQLException("Cannot drop column(s) with 
enabled MVCC. " +
-                    "Operation is unsupported at the moment.", 
IgniteQueryErrorCode.UNSUPPORTED_OPERATION);
-            }
-
             if (QueryUtils.isSqlType(typeDesc.valueClass())) {
                 throw new SchemaOperationException("Cannot drop column(s) 
because table was created " +
                     "with WRAP_VALUE=false option.");
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/inline/InlineIndexImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/inline/InlineIndexImpl.java
index fd374b150d2..d57c76d9cc0 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/inline/InlineIndexImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/inline/InlineIndexImpl.java
@@ -222,7 +222,7 @@ public class InlineIndexImpl extends AbstractIndex 
implements InlineIndex {
 
     /** */
     private boolean isSingleRowLookup(IndexRow lower, IndexRow upper) throws 
IgniteCheckedException {
-        return !cctx.mvccEnabled() && def.primary() && lower != null && 
isFullSchemaSearch(lower) && checkRowsTheSame(lower, upper);
+        return def.primary() && lower != null && isFullSchemaSearch(lower) && 
checkRowsTheSame(lower, upper);
     }
 
     /**
@@ -475,8 +475,6 @@ public class InlineIndexImpl extends AbstractIndex 
implements InlineIndex {
 
         MvccSnapshot v = qryCtx.mvccSnapshot();
 
-        assert !cctx.mvccEnabled() || v != null;
-
         if (cacheFilter == null && v == null && qryCtx.rowFilter() == null)
             return null;
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/cache/ValidateIndexesClosure.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/cache/ValidateIndexesClosure.java
index 4bc27a679af..1e26da8e4ce 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/cache/ValidateIndexesClosure.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/cache/ValidateIndexesClosure.java
@@ -53,9 +53,6 @@ import 
org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
 import org.apache.ignite.internal.processors.cache.KeyCacheObject;
 import org.apache.ignite.internal.processors.cache.PartitionUpdateCounter;
 import 
org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition;
-import org.apache.ignite.internal.processors.cache.mvcc.MvccQueryTracker;
-import org.apache.ignite.internal.processors.cache.mvcc.MvccSnapshot;
-import org.apache.ignite.internal.processors.cache.mvcc.MvccUtils;
 import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
 import 
org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager;
 import 
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStore;
@@ -535,24 +532,7 @@ public class ValidateIndexesClosure implements 
IgniteCallable<ValidateIndexesJob
 
             partRes = new ValidateIndexesPartitionResult();
 
-            boolean hasMvcc = 
grpCtx.caches().stream().anyMatch(GridCacheContext::mvccEnabled);
-
-            if (hasMvcc) {
-                for (GridCacheContext<?, ?> context : grpCtx.caches()) {
-                    IndexQueryContext qryCtx = mvccQueryContext(context);
-
-                    GridIterator<CacheDataRow> iterator = 
grpCtx.offheap().cachePartitionIterator(
-                        context.cacheId(),
-                        part.id(),
-                        qryCtx.mvccSnapshot(),
-                        null
-                    );
-
-                    processPartIterator(grpCtx, partRes, qryCtx, iterator);
-                }
-            }
-            else
-                processPartIterator(grpCtx, partRes, null, 
grpCtx.offheap().partitionIterator(part.id()));
+            processPartIterator(grpCtx, partRes, null, 
grpCtx.offheap().partitionIterator(part.id()));
 
             PartitionUpdateCounter updateCntrAfter = 
part.dataStore().partUpdateCounter();
 
@@ -702,27 +682,6 @@ public class ValidateIndexesClosure implements 
IgniteCallable<ValidateIndexesJob
         }
     }
 
-    /**
-     * Get QueryContext for MVCC snapshot.
-     *
-     * @param cctx Cache context.
-     * @return QueryContext for MVCC snapshot.
-     * @throws IgniteCheckedException If failed.
-     */
-    private IndexQueryContext mvccQueryContext(GridCacheContext<?, ?> cctx) 
throws IgniteCheckedException {
-        boolean mvccEnabled = cctx.mvccEnabled();
-
-        if (mvccEnabled) {
-            MvccQueryTracker tracker = MvccUtils.mvccTracker(cctx, true);
-
-            MvccSnapshot mvccSnapshot = tracker.snapshot();
-
-            return new IndexQueryContext(cacheName -> null, null, 
mvccSnapshot);
-        }
-
-        return null;
-    }
-
     /**
      *
      */
@@ -791,7 +750,7 @@ public class ValidateIndexesClosure implements 
IgniteCallable<ValidateIndexesJob
         GridCursor<IndexRow> cursor = null;
 
         try {
-            cursor = idx.find(null, null, true, true, 
mvccQueryContext(cacheCtxWithIdx.get1()));
+            cursor = idx.find(null, null, true, true, null);
 
             if (cursor == null)
                 throw new IgniteCheckedException("Can't iterate through index: 
" + idx);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/cdc/CdcCacheDataResendTask.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/cdc/CdcCacheDataResendTask.java
index b14c872170b..ab81ce8229c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/cdc/CdcCacheDataResendTask.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/cdc/CdcCacheDataResendTask.java
@@ -142,9 +142,6 @@ public class CdcCacheDataResendTask extends 
VisorMultiNodeTask<CdcResendCommandA
                         ", dataRegionName=" + 
cache.context().dataRegion().config().getName() + ']');
                 }
 
-                if (cache.context().mvccEnabled())
-                    throw new UnsupportedOperationException("The 
TRANSACTIONAL_SNAPSHOT mode is not supported.");
-
                 caches.add(cache);
             }
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/indexing/IndexesRebuildTask.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/indexing/IndexesRebuildTask.java
index 847fcce196b..cc6d4f6fe42 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/indexing/IndexesRebuildTask.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/indexing/IndexesRebuildTask.java
@@ -71,10 +71,8 @@ public class IndexesRebuildTask {
         boolean recreate = pageStore == null || 
!pageStore.hasIndexStore(cctx.groupId());
 
         if (recreate) {
-            boolean mvccEnabled = cctx.mvccEnabled();
-
             // If there are no index store, rebuild all indexes.
-            clo = row -> cctx.queries().store(row, null, mvccEnabled);
+            clo = row -> cctx.queries().store(row, null, false);
         }
         else {
             Collection<InlineIndex> toRebuild = 
cctx.kernalContext().indexProcessor().treeIndexes(cctx.name(), !force);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GatewayProtectedCacheProxy.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GatewayProtectedCacheProxy.java
index 09cec58727e..dab37b7c532 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GatewayProtectedCacheProxy.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GatewayProtectedCacheProxy.java
@@ -51,7 +51,6 @@ import org.apache.ignite.cache.query.SqlFieldsQuery;
 import org.apache.ignite.cluster.ClusterGroup;
 import org.apache.ignite.internal.AsyncSupportAdapter;
 import org.apache.ignite.internal.GridKernalState;
-import org.apache.ignite.internal.processors.cache.mvcc.MvccUtils;
 import org.apache.ignite.internal.util.tostring.GridToStringExclude;
 import org.apache.ignite.internal.util.typedef.internal.A;
 import org.apache.ignite.lang.IgniteBiPredicate;
@@ -145,8 +144,6 @@ public class GatewayProtectedCacheProxy<K, V> extends 
AsyncSupportAdapter<Ignite
         CacheOperationGate opGate = onEnter();
 
         try {
-            MvccUtils.verifyMvccOperationSupport(delegate.context(), 
"withExpiryPolicy");
-
             return new GatewayProtectedCacheProxy<>(delegate, 
opCtx.withExpiryPolicy(plc), lock);
         }
         finally {
@@ -239,11 +236,6 @@ public class GatewayProtectedCacheProxy<K, V> extends 
AsyncSupportAdapter<Ignite
         CacheOperationGate opGate = onEnter();
 
         try {
-            if (context().mvccEnabled()) {
-                throw new UnsupportedOperationException(
-                    "The TRANSACTIONAL_SNAPSHOT mode is incompatible with the 
read-repair feature.");
-            }
-
             if (context().isNear())
                 throw new UnsupportedOperationException("Read-repair is 
incompatible with near caches.");
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
index 5aab76e7912..6a54eee0976 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
@@ -102,7 +102,6 @@ import 
org.apache.ignite.internal.processors.cache.distributed.near.consistency.
 import 
org.apache.ignite.internal.processors.cache.distributed.near.consistency.IgniteConsistencyViolationException;
 import org.apache.ignite.internal.processors.cache.dr.GridCacheDrInfo;
 import org.apache.ignite.internal.processors.cache.mvcc.MvccSnapshot;
-import org.apache.ignite.internal.processors.cache.mvcc.MvccUtils;
 import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
 import 
org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
 import org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey;
@@ -176,7 +175,6 @@ import static 
org.apache.ignite.internal.processors.task.TaskExecutionOptions.op
 import static org.apache.ignite.transactions.TransactionConcurrency.OPTIMISTIC;
 import static 
org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
 import static 
org.apache.ignite.transactions.TransactionIsolation.READ_COMMITTED;
-import static 
org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_READ;
 import static org.apache.ignite.transactions.TransactionIsolation.SERIALIZABLE;
 
 /**
@@ -767,16 +765,10 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
 
                 IgniteCacheOffheapManager offheapMgr = ctx.isNear() ? 
ctx.near().dht().context().offheap() : ctx.offheap();
 
-                MvccSnapshot mvccSnapshot = ctx.mvccEnabled() ? 
MvccUtils.MVCC_MAX_SNAPSHOT : null;
-
-                its.add(offheapMgr.cacheEntriesIterator(ctx, modes.primary, 
modes.backup, topVer, ctx.keepBinary(),
-                        mvccSnapshot, null));
+                its.add(offheapMgr.cacheEntriesIterator(ctx, modes.primary, 
modes.backup, topVer, ctx.keepBinary(), null, null));
             }
         }
         else if (modes.heap) {
-            if (ctx.mvccEnabled())
-                return F.emptyIterator();
-
             if (modes.near && ctx.isNear())
                 its.add(ctx.near().nearEntries().iterator());
 
@@ -876,9 +868,7 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
                 ctx.shared().database().checkpointReadLock();
 
                 try {
-                    cacheVal = ctx.mvccEnabled()
-                        ? e.mvccPeek(modes.heap && !modes.offheap)
-                        : e.peek(modes.heap, modes.offheap, topVer, null);
+                    cacheVal = e.peek(modes.heap, modes.offheap, topVer, null);
                 }
                 catch (GridCacheEntryRemovedException ignore) {
                     if (log.isDebugEnabled())
@@ -1065,9 +1055,6 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
     @Override public void clearLocally(boolean srv, boolean near, boolean 
readers) {
         ctx.checkSecurity(SecurityPermission.CACHE_REMOVE);
 
-        //TODO IGNITE-7952
-        MvccUtils.verifyMvccOperationSupport(ctx, "Clear");
-
         List<GridCacheClearAllRunnable<K, V>> jobs = splitClearLocally(srv, 
near, readers);
 
         if (!F.isEmpty(jobs)) {
@@ -1138,9 +1125,6 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
      * @throws IgniteCheckedException In case of error.
      */
     private void clear(@Nullable Set<? extends K> keys) throws 
IgniteCheckedException {
-        //TODO IGNITE-7952
-        MvccUtils.verifyMvccOperationSupport(ctx, "Clear");
-
         ctx.shared().cache().checkReadOnlyState("clear", ctx.config());
 
         executeClearTask(keys, false).get();
@@ -1152,9 +1136,6 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
      * @return Future.
      */
     private IgniteInternalFuture<?> clearAsync(@Nullable final Set<? extends 
K> keys) {
-        //TODO IGNITE-7952
-        MvccUtils.verifyMvccOperationSupport(ctx, "Clear");
-
         ctx.shared().cache().checkReadOnlyState("clear", ctx.config());
 
         return executeClearTask(keys, false).chainCompose(fut -> 
executeClearTask(keys, true));
@@ -1216,9 +1197,6 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
         if (F.isEmpty(keys))
             return;
 
-        //TODO IGNITE-7952
-        MvccUtils.verifyMvccOperationSupport(ctx, "Clear");
-
         GridCacheVersion obsoleteVer = nextVersion();
 
         for (KeyCacheObject key : keys) {
@@ -1948,8 +1926,8 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
             tx = checkCurrentTx();
         }
 
-        if (ctx.mvccEnabled() || tx == null || tx.implicit()) {
-            assert (mvccSnapshot == null) == !ctx.mvccEnabled();
+        if (tx == null || tx.implicit()) {
+            assert mvccSnapshot == null;
 
             Map<KeyCacheObject, EntryGetResult> misses = null;
 
@@ -2304,10 +2282,7 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
 
     /** */
     protected GridNearTxLocal checkCurrentTx() {
-        if (!ctx.mvccEnabled())
-            return ctx.tm().threadLocalTx(ctx);
-
-        return MvccUtils.tx(ctx.kernalContext(), null);
+        return ctx.tm().threadLocalTx(ctx);
     }
 
     /**
@@ -3486,9 +3461,6 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
         if (F.isEmpty(keys))
             return true;
 
-        //TODO: IGNITE-9324: add explicit locks support.
-        MvccUtils.verifyMvccOperationSupport(ctx, "Lock");
-
         IgniteInternalFuture<Boolean> fut = lockAllAsync(keys, timeout);
 
         boolean isInterrupted = false;
@@ -3530,9 +3502,6 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
     @Override public IgniteInternalFuture<Boolean> lockAsync(K key, long 
timeout) {
         A.notNull(key, "key");
 
-        //TODO: IGNITE-9324: add explicit locks support.
-        MvccUtils.verifyMvccOperationSupport(ctx, "Lock");
-
         return lockAllAsync(Collections.singletonList(key), timeout);
     }
 
@@ -3633,9 +3602,6 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
     /** {@inheritDoc} */
     @Override public void localLoadCache(final IgniteBiPredicate<K, V> p, 
Object[] args)
         throws IgniteCheckedException {
-        //TODO IGNITE-7954
-        MvccUtils.verifyMvccOperationSupport(ctx, "Load");
-
         final boolean replicate = ctx.isDrEnabled();
         final AffinityTopologyVersion topVer = 
ctx.affinity().affinityTopologyVersion();
 
@@ -3771,9 +3737,6 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
         for (Object key : keys)
             A.notNull(key, "key");
 
-        //TODO IGNITE-7954
-        MvccUtils.verifyMvccOperationSupport(ctx, "Load");
-
         CacheOperationContext opCtx = ctx.operationContextPerCall();
 
         ExpiryPolicy plc = opCtx != null ? opCtx.expiry() : null;
@@ -3845,9 +3808,6 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
      */
     public void localLoad(Collection<? extends K> keys, @Nullable ExpiryPolicy 
plc, final boolean keepBinary)
         throws IgniteCheckedException {
-        //TODO IGNITE-7954
-        MvccUtils.verifyMvccOperationSupport(ctx, "Load");
-
         final boolean replicate = ctx.isDrEnabled();
         final AffinityTopologyVersion topVer = 
ctx.affinity().affinityTopologyVersion();
 
@@ -3918,9 +3878,6 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
 
         assert !F.isEmpty(nodes) : "There are not datanodes fo cache: " + 
ctx.name();
 
-        //TODO IGNITE-7954
-        MvccUtils.verifyMvccOperationSupport(ctx, "Load");
-
         final boolean keepBinary = opCtx != null && opCtx.isKeepBinary();
 
         IgniteInternalFuture<?> fut = ctx.kernalContext().closure().callAsync(
@@ -4245,11 +4202,11 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
                     true,
                     op.single(),
                     ctx.systemTx() ? ctx : null,
-                    ctx.mvccEnabled() ? PESSIMISTIC : OPTIMISTIC,
-                    ctx.mvccEnabled() ? REPEATABLE_READ : READ_COMMITTED,
+                    OPTIMISTIC,
+                    READ_COMMITTED,
                     tCfg.getDefaultTxTimeout(),
                     !ctx.skipStore(),
-                    ctx.mvccEnabled(),
+                    false,
                     0,
                     null
                 );
@@ -4363,11 +4320,11 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
                     true,
                     op.single(),
                     ctx.systemTx() ? ctx : null,
-                    ctx.mvccEnabled() ? PESSIMISTIC : OPTIMISTIC,
-                    ctx.mvccEnabled() ? REPEATABLE_READ : READ_COMMITTED,
+                    OPTIMISTIC,
+                    READ_COMMITTED,
                     txCfg.getDefaultTxTimeout(),
                     !skipStore,
-                    ctx.mvccEnabled(),
+                    false,
                     0,
                     null);
 
@@ -4635,9 +4592,6 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
     private boolean clearLocally0(K key, boolean readers) {
         ctx.shared().cache().checkReadOnlyState("clear", ctx.config());
 
-        //TODO IGNITE-7952
-        MvccUtils.verifyMvccOperationSupport(ctx, "Clear");
-
         ctx.checkSecurity(SecurityPermission.CACHE_REMOVE);
 
         GridCacheVersion obsoleteVer = nextVersion();
@@ -4669,9 +4623,6 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
     @Override public boolean evict(K key) {
         A.notNull(key, "key");
 
-        //TODO IGNITE-7956
-        MvccUtils.verifyMvccOperationSupport(ctx, "Evict");
-
         return evictx(key, nextVersion(), CU.empty0());
     }
 
@@ -4682,9 +4633,6 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
         if (F.isEmpty(keys))
             return;
 
-        //TODO IGNITE-7956
-        MvccUtils.verifyMvccOperationSupport(ctx, "Evict");
-
         GridCacheVersion obsoleteVer = nextVersion();
 
         try {
@@ -5392,11 +5340,11 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
                 true,
                 op.single(),
                 ctx.systemTx() ? ctx : null,
-                ctx.mvccEnabled() ? PESSIMISTIC : OPTIMISTIC,
-                ctx.mvccEnabled() ? REPEATABLE_READ : READ_COMMITTED,
+                OPTIMISTIC,
+                READ_COMMITTED,
                 CU.transactionConfiguration(ctx, 
ctx.kernalContext().config()).getDefaultTxTimeout(),
                 opCtx == null || !opCtx.skipStore(),
-                ctx.mvccEnabled(),
+                false,
                 0,
                 null);
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
index fb48c74a141..6136c24ce72 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
@@ -114,6 +114,7 @@ import org.apache.ignite.marshaller.Marshaller;
 import org.apache.ignite.plugin.security.SecurityException;
 import org.apache.ignite.plugin.security.SecurityPermission;
 import org.jetbrains.annotations.Nullable;
+
 import static 
org.apache.ignite.IgniteSystemProperties.IGNITE_DISABLE_TRIGGERING_CACHE_INTERCEPTOR_ON_CONFLICT;
 import static 
org.apache.ignite.IgniteSystemProperties.IGNITE_READ_LOAD_BALANCING;
 import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
@@ -2115,15 +2116,7 @@ public class GridCacheContext<K, V> implements 
Externalizable {
      * @return {@code True} if it is possible to directly read offheap instead 
of using {@link GridCacheEntryEx#innerGet}.
      */
     public boolean readNoEntry(@Nullable IgniteCacheExpiryPolicy expiryPlc, 
boolean readers) {
-        return mvccEnabled()
-                || (!config().isOnheapCacheEnabled() && !readers && expiryPlc 
== null && config().getPlatformCacheConfiguration() == null);
-    }
-
-    /**
-     * @return {@code True} if mvcc is enabled for cache.
-     */
-    public boolean mvccEnabled() {
-        return grp.mvccEnabled();
+        return !config().isOnheapCacheEnabled() && !readers && expiryPlc == 
null && config().getPlatformCacheConfiguration() == null;
     }
 
     /**
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
index ba15b79bab1..d08b379c692 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
@@ -189,11 +189,6 @@ public interface GridCacheEntryEx {
      */
     @Nullable public GridCacheEntryInfo info();
 
-    /**
-     * @return Entry info for each MVCC version.
-     */
-    @Nullable public List<GridCacheEntryInfo> allVersionsInfo() throws 
IgniteCheckedException;
-
     /**
      * Invalidates this entry.
      *
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
index 70b4c5870e4..cf7815a465b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
@@ -88,7 +88,6 @@ import 
org.apache.ignite.internal.transactions.IgniteTxSerializationCheckedExcep
 import org.apache.ignite.internal.util.IgniteTree;
 import org.apache.ignite.internal.util.future.GridFutureAdapter;
 import org.apache.ignite.internal.util.lang.GridClosureException;
-import org.apache.ignite.internal.util.lang.GridCursor;
 import org.apache.ignite.internal.util.lang.GridMetadataAwareAdapter;
 import org.apache.ignite.internal.util.lang.GridTuple;
 import org.apache.ignite.internal.util.lang.GridTuple3;
@@ -125,7 +124,6 @@ import static 
org.apache.ignite.internal.processors.cache.GridCacheUpdateAtomicR
 import static 
org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionState.RENTING;
 import static 
org.apache.ignite.internal.processors.cache.mvcc.MvccUtils.MVCC_MAX_SNAPSHOT;
 import static 
org.apache.ignite.internal.processors.cache.mvcc.MvccUtils.compareIgnoreOpCounter;
-import static 
org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter.RowData.NO_KEY;
 import static 
org.apache.ignite.internal.processors.cache.version.GridCacheVersionEx.addConflictVersion;
 import static org.apache.ignite.internal.processors.dr.GridDrType.DR_NONE;
 
@@ -443,77 +441,6 @@ public abstract class GridCacheMapEntry extends 
GridMetadataAwareAdapter impleme
         return info;
     }
 
-    /** {@inheritDoc} */
-    @Nullable @Override public List<GridCacheEntryInfo> allVersionsInfo() 
throws IgniteCheckedException {
-        assert cctx.mvccEnabled();
-
-        lockEntry();
-
-        try {
-            if (obsolete())
-                return Collections.emptyList();
-
-            GridCursor<? extends CacheDataRow> cur =
-                
cctx.offheap().dataStore(localPartition()).mvccAllVersionsCursor(cctx, key, 
NO_KEY);
-
-            List<GridCacheEntryInfo> res = new ArrayList<>();
-
-            while (cur.next()) {
-                CacheDataRow row = cur.get();
-
-                GridCacheMvccEntryInfo info = new GridCacheMvccEntryInfo();
-
-                info.key(key);
-                info.value(row.value());
-                info.cacheId(cctx.cacheId());
-                info.version(row.version());
-                info.setNew(false);
-                info.setDeleted(false);
-
-                byte txState = row.mvccTxState() != TxState.NA ? 
row.mvccTxState() :
-                    MvccUtils.state(cctx, row.mvccCoordinatorVersion(), 
row.mvccCounter(),
-                        row.mvccOperationCounter());
-
-                if (txState == TxState.ABORTED)
-                    continue;
-
-                info.mvccVersion(row.mvccCoordinatorVersion(), 
row.mvccCounter(), row.mvccOperationCounter());
-                info.mvccTxState(txState);
-
-                byte newTxState = row.newMvccTxState() != TxState.NA ? 
row.newMvccTxState() :
-                    MvccUtils.state(cctx, row.newMvccCoordinatorVersion(), 
row.newMvccCounter(),
-                        row.newMvccOperationCounter());
-
-                if (newTxState != TxState.ABORTED) {
-                    info.newMvccVersion(row.newMvccCoordinatorVersion(),
-                        row.newMvccCounter(),
-                        row.newMvccOperationCounter());
-
-                    info.newMvccTxState(newTxState);
-                }
-
-                long expireTime = row.expireTime();
-
-                long ttl;
-
-                ttl = expireTime == CU.EXPIRE_TIME_ETERNAL ? CU.TTL_ETERNAL : 
expireTime - U.currentTimeMillis();
-
-                if (ttl < 0)
-                    ttl = CU.TTL_MINIMUM;
-
-                info.ttl(ttl);
-                info.expireTime(expireTime);
-
-                res.add(info);
-            }
-
-            return res;
-        }
-        finally {
-            unlockEntry();
-        }
-    }
-
     /** {@inheritDoc} */
     @Override public final CacheObject unswap() throws IgniteCheckedException, 
GridCacheEntryRemovedException {
         return unswap(true);
@@ -1028,10 +955,7 @@ public abstract class GridCacheMapEntry extends 
GridMetadataAwareAdapter impleme
                             deletedUnlocked(false);
                     }
                     else {
-                        if (cctx.mvccEnabled())
-                            cctx.offheap().mvccRemoveAll(this);
-                        else
-                            removeValue();
+                        removeValue();
 
                         if (cctx.deferredDelete() && !isInternal() && 
!detached() && !deletedUnlocked())
                             deletedUnlocked(true);
@@ -2342,10 +2266,7 @@ public abstract class GridCacheMapEntry extends 
GridMetadataAwareAdapter impleme
                     ", val=" + val + ']');
             }
 
-            if (cctx.mvccEnabled())
-                cctx.offheap().mvccRemoveAll(this);
-            else
-                removeValue();
+            removeValue();
         }
         finally {
             unlockEntry();
@@ -2870,10 +2791,7 @@ public abstract class GridCacheMapEntry extends 
GridMetadataAwareAdapter impleme
             long delta = expireTime - U.currentTimeMillis();
 
             if (delta <= 0) {
-                if (cctx.mvccEnabled())
-                    cctx.offheap().mvccRemoveAll(this);
-                else
-                    removeValue();
+                removeValue();
 
                 return true;
             }
@@ -3048,45 +2966,11 @@ public abstract class GridCacheMapEntry extends 
GridMetadataAwareAdapter impleme
                         }
                     }
 
-                    if (cctx.mvccEnabled()) {
-                        assert !preload;
-
-                        cctx.offheap().mvccInitialValue(this, val, ver, 
expTime, mvccVer, newMvccVer);
-                    }
-                    else
-                        storeValue(val, expTime, ver, null, row);
-                }
-            }
-            else {
-                if (cctx.mvccEnabled()) {
-                    // cannot identify whether the entry is exist on the fly
-                    unswap(false);
-
-                    if (update = p.apply(null)) {
-                        // If entry is already unswapped and we are modifying 
it, we must run deletion callbacks for old value.
-                        long oldExpTime = expireTimeUnlocked();
-                        long delta = (oldExpTime == 0 ? 0 : oldExpTime - 
U.currentTimeMillis());
-
-                        if (delta < 0) {
-                            if (onExpired(this.val, null)) {
-                                if (cctx.deferredDelete()) {
-                                    deferred = true;
-                                    oldVer = this.ver;
-                                }
-                                else if (val == null)
-                                    obsolete = true;
-                            }
-                        }
-
-                        assert !preload;
-
-                        cctx.offheap().mvccInitialValue(this, val, ver, 
expTime, mvccVer, newMvccVer);
-                    }
+                    storeValue(val, expTime, ver, null, row);
                 }
-                else
-                    // Optimization to access storage only once.
-                    update = storeValue(val, expTime, ver, p, row);
             }
+            else
+                update = storeValue(val, expTime, ver, p, row);
 
             if (update) {
                 update(val, expTime, ttl, ver, true);
@@ -3108,34 +2992,18 @@ public abstract class GridCacheMapEntry extends 
GridMetadataAwareAdapter impleme
                     updateCntr = nextPartitionCounter(topVer, true, true, 
null);
 
                 if (walEnabled) {
-                    if (cctx.mvccEnabled()) {
-                        cctx.group().wal().log(new MvccDataRecord(new 
MvccDataEntry(
-                            cctx.cacheId(),
-                            key,
-                            val,
-                            val == null ? DELETE : GridCacheOperation.CREATE,
-                            null,
-                            ver,
-                            expireTime,
-                            partition(),
-                            updateCntr,
-                            mvccVer == null ? MvccUtils.INITIAL_VERSION : 
mvccVer
-                        )));
-                    }
-                    else {
-                        cctx.group().wal().log(new DataRecord(new DataEntry(
-                            cctx.cacheId(),
-                            key,
-                            val,
-                            val == null ? DELETE : GridCacheOperation.CREATE,
-                            null,
-                            ver,
-                            expireTime,
-                            partition(),
-                            updateCntr,
-                            DataEntry.flags(primary, preload, fromStore)
-                        )));
-                    }
+                    cctx.group().wal().log(new DataRecord(new DataEntry(
+                        cctx.cacheId(),
+                        key,
+                        val,
+                        val == null ? DELETE : GridCacheOperation.CREATE,
+                        null,
+                        ver,
+                        expireTime,
+                        partition(),
+                        updateCntr,
+                        DataEntry.flags(primary, preload, fromStore)
+                    )));
                 }
 
                 drReplicate(drType, val, ver, topVer);
@@ -3754,10 +3622,7 @@ public abstract class GridCacheMapEntry extends 
GridMetadataAwareAdapter impleme
         if (log.isTraceEnabled())
             log.trace("onExpired clear [key=" + key + ", entry=" + 
System.identityHashCode(this) + ']');
 
-        if (cctx.mvccEnabled())
-            cctx.offheap().mvccRemoveAll(this);
-        else
-            removeValue();
+        removeValue();
 
         if (cctx.events().isRecordable(EVT_CACHE_OBJECT_EXPIRED)) {
             cctx.events().addEvent(partition(),
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index 61696306fe7..4618afce95b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -2262,7 +2262,6 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
                 ", mode=" + cfg.getCacheMode() +
                 ", atomicity=" + cfg.getAtomicityMode() +
                 ", backups=" + cfg.getBackups() +
-                ", mvcc=" + cacheCtx.mvccEnabled() +
                 (expPlcInfo != null ? ", " + expPlcInfo : "") + ']');
         }
 
@@ -2345,7 +2344,6 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
                 ", mode=" + cfg.getCacheMode() +
                 ", atomicity=" + cfg.getAtomicityMode() +
                 ", backups=" + cfg.getBackups() +
-                ", mvcc=" + cacheCtx.mvccEnabled() +
                 (expPlcInfo != null ? ", " + expPlcInfo : "") + ']');
         }
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
index f8c27c2f18c..c1680aa89ab 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
@@ -115,6 +115,7 @@ import org.apache.ignite.transactions.TransactionIsolation;
 import org.apache.ignite.transactions.TransactionRollbackException;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
+
 import static java.util.Objects.nonNull;
 import static 
org.apache.ignite.IgniteSystemProperties.IGNITE_SKIP_CONFIGURATION_CONSISTENCY_CHECK;
 import static org.apache.ignite.cache.CacheMode.PARTITIONED;
@@ -1807,7 +1808,7 @@ public class GridCacheUtils {
         boolean readThrough,
         boolean skipVals
     ) {
-        if (cctx.mvccEnabled() || !readThrough || skipVals ||
+        if (!readThrough || skipVals ||
             (key != null && !cctx.affinity().backupsByKey(key, 
topVer).contains(cctx.localNode())))
             return null;
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java
index 8d9f23f9a00..17628fd4f71 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java
@@ -79,7 +79,6 @@ import org.apache.ignite.internal.AsyncSupportAdapter;
 import org.apache.ignite.internal.IgniteEx;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
-import org.apache.ignite.internal.processors.cache.mvcc.MvccUtils;
 import org.apache.ignite.internal.processors.cache.query.CacheQuery;
 import org.apache.ignite.internal.processors.cache.query.CacheQueryFuture;
 import org.apache.ignite.internal.processors.cache.query.GridCacheQueryType;
@@ -447,9 +446,6 @@ public class IgniteCacheProxyImpl<K, V> extends 
AsyncSupportAdapter<IgniteCache<
         IgniteInternalCache<K, V> delegate = getDelegateSafe();
         GridCacheContext<K, V> ctx = getContextSafe();
 
-        //TODO: IGNITE-9324: add explicit locks support.
-        MvccUtils.verifyMvccOperationSupport(ctx, "Lock");
-
         return new CacheLockImpl<>(ctx.gate(), delegate, 
ctx.operationContextPerCall(), keys);
     }
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
index 9b0f870cbbb..afc98e047cd 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
@@ -490,7 +490,7 @@ public abstract class GridDistributedTxRemoteAdapter 
extends IgniteTxAdapter imp
                     Set<GridDhtLocalPartition> reservedParts = new HashSet<>();
 
                     try {
-                        assert !txState.mvccEnabled() || mvccSnapshot != null 
: "Mvcc is not initialized: " + this;
+                        assert mvccSnapshot == null;
 
                         Collection<IgniteTxEntry> entries = near() ? 
allEntries() : writeEntries();
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
index a785bb6bc80..d700ae7122e 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
@@ -72,7 +72,6 @@ import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearGetR
 import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearSingleGetRequest;
 import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearSingleGetResponse;
 import org.apache.ignite.internal.processors.cache.mvcc.MvccSnapshot;
-import org.apache.ignite.internal.processors.cache.mvcc.MvccUtils;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
 import 
org.apache.ignite.internal.processors.platform.cache.PlatformCacheEntryFilter;
 import org.apache.ignite.internal.processors.security.SecurityUtils;
@@ -233,30 +232,16 @@ public abstract class GridDhtCacheAdapter<K, V> extends 
GridDistributedCacheAdap
 
                         entry.unswap();
 
-                        if (ctx.mvccEnabled()) {
-                            List<GridCacheEntryInfo> infos = 
entry.allVersionsInfo();
+                        GridCacheEntryInfo info = entry.info();
 
-                            if (infos == null) {
-                                assert entry.obsolete() : entry;
+                        if (info == null) {
+                            assert entry.obsolete() : entry;
 
-                                continue;
-                            }
-
-                            for (int i = 0; i < infos.size(); i++)
-                                res.addInfo(infos.get(i));
+                            continue;
                         }
-                        else {
-                            GridCacheEntryInfo info = entry.info();
-
-                            if (info == null) {
-                                assert entry.obsolete() : entry;
 
-                                continue;
-                            }
-
-                            if (!info.isNew())
-                                res.addInfo(info);
-                        }
+                        if (!info.isNew())
+                            res.addInfo(info);
 
                         entry.touch();
 
@@ -503,9 +488,6 @@ public abstract class GridDhtCacheAdapter<K, V> extends 
GridDistributedCacheAdap
             return;
         }
 
-        //TODO IGNITE-7954
-        MvccUtils.verifyMvccOperationSupport(ctx, "Load");
-
         final AffinityTopologyVersion topVer = 
ctx.affinity().affinityTopologyVersion();
 
         // Version for all loaded entries.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java
index f66602d68de..05de436568e 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java
@@ -672,10 +672,7 @@ public class GridDhtCacheEntry extends 
GridDistributedCacheEntry {
                     ']');
             }
 
-            if (cctx.mvccEnabled())
-                cctx.offheap().mvccRemoveAll(this);
-            else
-                removeValue();
+            removeValue();
 
             // Give to GC.
             update(null, 0L, 0L, ver, true);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
index 2f09a2866d8..97e025ebdf2 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
@@ -185,8 +185,6 @@ public final class GridDhtGetFuture<K, V> extends 
GridCompoundIdentityFuture<Col
         // TODO get rid of force keys request 
https://issues.apache.org/jira/browse/IGNITE-10251
         GridDhtFuture<Object> fut = cctx.group().preloader().request(cctx, 
keys.keySet(), topVer);
 
-        assert !cctx.mvccEnabled() || fut == null; // Should not happen with 
MVCC enabled.
-
         if (fut != null) {
             if (!F.isEmpty(fut.invalidPartitions())) {
                 if (retries == null)
@@ -313,18 +311,6 @@ public final class GridDhtGetFuture<K, V> extends 
GridCompoundIdentityFuture<Col
         try {
             int keyPart = cctx.affinity().partition(key);
 
-            if (cctx.mvccEnabled()) {
-                boolean noOwners = cctx.topology().owners(keyPart, 
topVer).isEmpty();
-
-                // Force key request is disabled for MVCC. So if there are no 
partition owners for the given key
-                // (we have a not strict partition loss policy if we've got 
here) we need to set flag forceKeys to true
-                // to avoid useless remapping to other non-owning partitions. 
For non-mvcc caches the force key request
-                // is also useless in the such situations, so the same flow is 
here: allegedly we've made a force key
-                // request with no results and therefore forceKeys flag may be 
set to true here.
-                if (noOwners)
-                    forceKeys = true;
-            }
-
             GridDhtLocalPartition part = topVer.topologyVersion() > 0 ?
                 cache().topology().localPartition(keyPart, topVer, true) :
                 cache().topology().localPartition(keyPart);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetSingleFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetSingleFuture.java
index b26ab9178ac..28062800b96 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetSingleFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetSingleFuture.java
@@ -206,8 +206,6 @@ public final class GridDhtGetSingleFuture<K, V> extends 
GridFutureAdapter<GridCa
     private void map() {
         // TODO Get rid of force keys request 
https://issues.apache.org/jira/browse/IGNITE-10251.
         if (cctx.group().preloader().needForceKeys()) {
-            assert !cctx.mvccEnabled();
-
             GridDhtFuture<Object> fut = cctx.group().preloader().request(
                 cctx,
                 Collections.singleton(key),
@@ -283,18 +281,6 @@ public final class GridDhtGetSingleFuture<K, V> extends 
GridFutureAdapter<GridCa
         try {
             int keyPart = cctx.affinity().partition(key);
 
-            if (cctx.mvccEnabled()) {
-                boolean noOwners = cctx.topology().owners(keyPart, 
topVer).isEmpty();
-
-                // Force key request is disabled for MVCC. So if there are no 
partition owners for the given key
-                // (we have a not strict partition loss policy if we've got 
here) we need to set flag forceKeys to true
-                // to avoid useless remapping to other non-owning partitions. 
For non-mvcc caches the force key request
-                // is also useless in the such situations, so the same flow is 
here: allegedly we've made a force key
-                // request with no results and therefore forceKeys flag may be 
set to true here.
-                if (noOwners)
-                    forceKeys = true;
-            }
-
             GridDhtLocalPartition part = topVer.topologyVersion() > 0 ?
                 cache().topology().localPartition(keyPart, topVer, true) :
                 cache().topology().localPartition(keyPart);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
index 95a32f2a314..d937006ce13 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
@@ -55,8 +55,6 @@ import 
org.apache.ignite.internal.processors.cache.distributed.GridDistributedLo
 import 
org.apache.ignite.internal.processors.cache.distributed.dht.colocated.GridDhtColocatedLockFuture;
 import 
org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtInvalidPartitionException;
 import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearCacheAdapter;
-import org.apache.ignite.internal.processors.cache.mvcc.MvccUpdateVersionAware;
-import org.apache.ignite.internal.processors.cache.mvcc.MvccVersionAware;
 import org.apache.ignite.internal.processors.cache.mvcc.txlog.TxState;
 import 
org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
 import org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry;
@@ -1351,10 +1349,10 @@ public final class GridDhtLockFuture extends 
GridCacheCompoundIdentityFuture<Boo
                             try {
                                 if (entry.initialValue(info.value(),
                                     info.version(),
-                                    cctx.mvccEnabled() ? 
((MvccVersionAware)info).mvccVersion() : null,
-                                    cctx.mvccEnabled() ? 
((MvccUpdateVersionAware)info).newMvccVersion() : null,
-                                    cctx.mvccEnabled() ? 
((MvccVersionAware)entry).mvccTxState() : TxState.NA,
-                                    cctx.mvccEnabled() ? 
((MvccUpdateVersionAware)entry).newMvccTxState() : TxState.NA,
+                                    null,
+                                    null,
+                                    TxState.NA,
+                                    TxState.NA,
                                     info.ttl(),
                                     info.expireTime(),
                                     true,
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxAbstractEnlistFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxAbstractEnlistFuture.java
index 432f2f31cd5..4cc5310abc1 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxAbstractEnlistFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxAbstractEnlistFuture.java
@@ -337,8 +337,6 @@ public abstract class GridDhtTxAbstractEnlistFuture<T> 
extends GridCacheFutureAd
             else // Nothing to do for single update.
                 assert tx.txState().cacheIds().contains(cctx.cacheId()) && 
tx.txState().cacheIds().size() == 1;
 
-            tx.markQueryEnlisted();
-
             this.it = it;
         }
         catch (Throwable e) {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
index e53eacc2b74..387eaeff6ce 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
@@ -261,7 +261,7 @@ public final class GridDhtTxFinishFuture<K, V> extends 
GridCacheCompoundIdentity
                     if (this.tx.syncMode() != PRIMARY_SYNC)
                         this.tx.sendFinishReply(finishErr);
 
-                    if (!this.tx.txState().mvccEnabled() && !commit && 
shouldApplyCountersOnRollbackError(finishErr)) {
+                    if (!commit && 
shouldApplyCountersOnRollbackError(finishErr)) {
                         TxCounters txCounters = this.tx.txCounters(false);
 
                         if (txCounters != null) {
@@ -319,7 +319,7 @@ public final class GridDhtTxFinishFuture<K, V> extends 
GridCacheCompoundIdentity
                  MTC.supportContinual(span = 
cctx.kernalContext().tracing().create(TX_DHT_FINISH, MTC.span()))) {
             boolean sync;
 
-            assert !tx.txState().mvccEnabled() || tx.mvccSnapshot() != null;
+            assert tx.mvccSnapshot() == null;
 
             if (!F.isEmpty(dhtMap) || !F.isEmpty(nearMap))
                 sync = finish(commit, dhtMap, nearMap);
@@ -435,8 +435,6 @@ public final class GridDhtTxFinishFuture<K, V> extends 
GridCacheCompoundIdentity
         if (tx.onePhaseCommit())
             return false;
 
-        assert !commit || !tx.txState().mvccEnabled() || tx.mvccSnapshot() != 
null || F.isEmpty(tx.writeEntries());
-
         boolean sync = tx.syncMode() == FULL_SYNC;
 
         if (tx.explicitLock() || tx.queryEnlisted())
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
index d3ea93089ba..4f8cbc9aabf 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
@@ -68,8 +68,6 @@ import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearCach
 import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxPrepareRequest;
 import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxPrepareResponse;
 import org.apache.ignite.internal.processors.cache.mvcc.MvccSnapshot;
-import org.apache.ignite.internal.processors.cache.mvcc.MvccUpdateVersionAware;
-import org.apache.ignite.internal.processors.cache.mvcc.MvccVersionAware;
 import org.apache.ignite.internal.processors.cache.mvcc.txlog.TxState;
 import 
org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
 import org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry;
@@ -1350,11 +1348,7 @@ public final class GridDhtTxPrepareFuture extends 
GridCacheCompoundFuture<Ignite
                 return;
 
             if (last) {
-                if (!tx.txState().mvccEnabled()) {
-                    /** For MVCC counters are assigned on enlisting. */
-                    /** See usage of {@link 
TxCounters#incrementUpdateCounter(int, int)} ) */
-                    tx.calculatePartitionUpdateCounters();
-                }
+                tx.calculatePartitionUpdateCounters();
 
                 recheckOnePhaseCommit();
 
@@ -1394,8 +1388,6 @@ public final class GridDhtTxPrepareFuture extends 
GridCacheCompoundFuture<Ignite
      *
      */
     private void sendPrepareRequests() {
-        assert !tx.txState().mvccEnabled() || !tx.onePhaseCommit() || 
tx.mvccSnapshot() != null;
-
         int miniId = 0;
 
         assert tx.transactionNodes() != null;
@@ -1989,10 +1981,10 @@ public final class GridDhtTxPrepareFuture extends 
GridCacheCompoundFuture<Ignite
                         try {
                             if (entry.initialValue(info.value(),
                                 info.version(),
-                                cacheCtx.mvccEnabled() ? 
((MvccVersionAware)info).mvccVersion() : null,
-                                cacheCtx.mvccEnabled() ? 
((MvccUpdateVersionAware)info).newMvccVersion() : null,
-                                cacheCtx.mvccEnabled() ? 
((MvccVersionAware)info).mvccTxState() : TxState.NA,
-                                cacheCtx.mvccEnabled() ? 
((MvccUpdateVersionAware)info).newMvccTxState() : TxState.NA,
+                                null,
+                                null,
+                                TxState.NA,
+                                TxState.NA,
                                 info.ttl(),
                                 info.expireTime(),
                                 true,
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
index 0105abc103b..a890cd792a8 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
@@ -113,7 +113,7 @@ public class GridPartitionedGetFuture<K, V> extends 
CacheDistributedGetFutureAda
             recovery
         );
 
-        assert (mvccSnapshot == null) == !cctx.mvccEnabled();
+        assert mvccSnapshot == null;
 
         this.mvccSnapshot = mvccSnapshot;
         this.txLbl = txLbl;
@@ -421,10 +421,7 @@ public class GridPartitionedGetFuture<K, V> extends 
CacheDistributedGetFutureAda
         List<ClusterNode> affNodes,
         Map<K, V> locVals
     ) {
-        // Local get cannot be used with MVCC as local node can contain some 
visible version which is not latest.
-        boolean fastLocGet = !cctx.mvccEnabled() &&
-            (!forcePrimary || affNodes.get(0).isLocal()) &&
-            cctx.reserveForFastLocalGet(part, topVer);
+        boolean fastLocGet = (!forcePrimary || affNodes.get(0).isLocal()) && 
cctx.reserveForFastLocalGet(part, topVer);
 
         if (fastLocGet) {
             try {
@@ -467,9 +464,7 @@ public class GridPartitionedGetFuture<K, V> extends 
CacheDistributedGetFutureAda
                 if (readNoEntry) {
                     KeyCacheObject key0 = 
(KeyCacheObject)cctx.cacheObjects().prepareForCache(key, cctx);
 
-                    CacheDataRow row = cctx.mvccEnabled() ?
-                        cctx.offheap().mvccRead(cctx, key0, mvccSnapshot()) :
-                        cctx.offheap().read(cctx, key0);
+                    CacheDataRow row = cctx.offheap().read(cctx, key0);
 
                     if (row != null) {
                         long expireTime = row.expireTime();
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
index 1fb2636695f..3233a3a93f8 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
@@ -190,7 +190,7 @@ public class GridPartitionedSingleGetFuture extends 
GridCacheFutureAdapter<Objec
         @Nullable MvccSnapshot mvccSnapshot
     ) {
         assert key != null;
-        assert mvccSnapshot == null || cctx.mvccEnabled();
+        assert mvccSnapshot == null;
 
         AffinityTopologyVersion lockedTopVer = 
cctx.shared().lockedTopologyVersion(null);
 
@@ -427,10 +427,7 @@ public class GridPartitionedSingleGetFuture extends 
GridCacheFutureAdapter<Objec
         AffinityTopologyVersion topVer,
         List<ClusterNode> affNodes
     ) {
-        // Local get cannot be used with MVCC as local node can contain some 
visible version which is not latest.
-        boolean fastLocGet = !cctx.mvccEnabled() &&
-            (!forcePrimary || affNodes.get(0).isLocal()) &&
-            cctx.reserveForFastLocalGet(part, topVer);
+        boolean fastLocGet = (!forcePrimary || affNodes.get(0).isLocal()) && 
cctx.reserveForFastLocalGet(part, topVer);
 
         if (fastLocGet) {
             try {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
index cf301cdf1d8..3c995babf3f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
@@ -63,7 +63,6 @@ import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearUnlo
 import 
org.apache.ignite.internal.processors.cache.distributed.near.consistency.GridNearReadRepairCheckOnlyFuture;
 import org.apache.ignite.internal.processors.cache.mvcc.MvccQueryTracker;
 import org.apache.ignite.internal.processors.cache.mvcc.MvccSnapshot;
-import org.apache.ignite.internal.processors.cache.mvcc.MvccUtils;
 import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
 import org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey;
 import 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalEx;
@@ -201,7 +200,7 @@ public class GridDhtColocatedCache<K, V> extends 
GridDhtTransactionalCacheAdapte
         final ReadRepairStrategy readRepairStrategy = opCtx != null ? 
opCtx.readRepairStrategy() : null;
 
         // Get operation bypass Tx in Mvcc mode.
-        if (!ctx.mvccEnabled() && tx != null && !tx.implicit() && !skipTx) {
+        if (tx != null && !tx.implicit() && !skipTx) {
             return asyncOp(tx, new AsyncOp<V>() {
                 @Override public IgniteInternalFuture<V> op(GridNearTxLocal 
tx, AffinityTopologyVersion readyTopVer) {
                     IgniteInternalFuture<Map<Object, Object>> fut = 
tx.getAllAsync(ctx,
@@ -238,23 +237,6 @@ public class GridDhtColocatedCache<K, V> extends 
GridDhtTransactionalCacheAdapte
         MvccSnapshot mvccSnapshot = null;
         MvccQueryTracker mvccTracker = null;
 
-        if (ctx.mvccEnabled()) {
-            try {
-                if (tx != null)
-                    mvccSnapshot = MvccUtils.requestSnapshot(tx);
-                else {
-                    mvccTracker = MvccUtils.mvccTracker(ctx, null);
-
-                    mvccSnapshot = mvccTracker.snapshot();
-                }
-
-                assert mvccSnapshot != null;
-            }
-            catch (IgniteCheckedException ex) {
-                return new GridFinishedFuture<>(ex);
-            }
-        }
-
         AffinityTopologyVersion topVer;
 
         if (tx != null)
@@ -335,7 +317,7 @@ public class GridDhtColocatedCache<K, V> extends 
GridDhtTransactionalCacheAdapte
 
         final CacheOperationContext opCtx = ctx.operationContextPerCall();
 
-        if (!ctx.mvccEnabled() && tx != null && !tx.implicit() && !skipTx) {
+        if (tx != null && !tx.implicit() && !skipTx) {
             return asyncOp(tx, new AsyncOp<Map<K, V>>(keys) {
                 /** {@inheritDoc} */
                 @Override public IgniteInternalFuture<Map<K, V>> 
op(GridNearTxLocal tx,
@@ -357,23 +339,6 @@ public class GridDhtColocatedCache<K, V> extends 
GridDhtTransactionalCacheAdapte
         MvccSnapshot mvccSnapshot = null;
         MvccQueryTracker mvccTracker = null;
 
-        if (ctx.mvccEnabled()) {
-            try {
-                if (tx != null)
-                    mvccSnapshot = MvccUtils.requestSnapshot(tx);
-                else {
-                    mvccTracker = MvccUtils.mvccTracker(ctx, null);
-
-                    mvccSnapshot = mvccTracker.snapshot();
-                }
-
-                assert mvccSnapshot != null;
-            }
-            catch (IgniteCheckedException ex) {
-                return new GridFinishedFuture<>(ex);
-            }
-        }
-
         AffinityTopologyVersion topVer;
 
         if (tx != null)
@@ -510,7 +475,7 @@ public class GridDhtColocatedCache<K, V> extends 
GridDhtTransactionalCacheAdapte
         @Nullable String txLbl,
         @Nullable MvccSnapshot mvccSnapshot
     ) {
-        assert (mvccSnapshot == null) == !ctx.mvccEnabled();
+        assert mvccSnapshot == null;
 
         if (keys == null || keys.isEmpty())
             return new GridFinishedFuture<>(Collections.<K, V>emptyMap());
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
index 2af2e7fd5d9..9a42bb00296 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
@@ -42,8 +42,6 @@ import 
org.apache.ignite.internal.processors.cache.KeyCacheObject;
 import 
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtFuture;
 import 
org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition;
 import 
org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionTopology;
-import org.apache.ignite.internal.processors.cache.mvcc.MvccUpdateVersionAware;
-import org.apache.ignite.internal.processors.cache.mvcc.MvccVersionAware;
 import org.apache.ignite.internal.processors.cache.mvcc.txlog.TxState;
 import org.apache.ignite.internal.util.F0;
 import org.apache.ignite.internal.util.GridLeanSet;
@@ -235,8 +233,6 @@ public final class GridDhtForceKeysFuture<K, V> extends 
GridCompoundFuture<Objec
         boolean ret = false;
 
         if (mappings != null) {
-            assert !cctx.mvccEnabled(); // Should not happen when MVCC enabled.
-
             ClusterNode loc = cctx.localNode();
 
             int curTopVer = topCntr.get();
@@ -538,10 +534,10 @@ public final class GridDhtForceKeysFuture<K, V> extends 
GridCompoundFuture<Objec
                         if (entry.initialValue(
                             info.value(),
                             info.version(),
-                            cctx.mvccEnabled() ? 
((MvccVersionAware)info).mvccVersion() : null,
-                            cctx.mvccEnabled() ? 
((MvccUpdateVersionAware)info).newMvccVersion() : null,
-                            cctx.mvccEnabled() ? 
((MvccVersionAware)entry).mvccTxState() : TxState.NA,
-                            cctx.mvccEnabled() ? 
((MvccUpdateVersionAware)entry).newMvccTxState() : TxState.NA,
+                            null,
+                            null,
+                            TxState.NA,
+                            TxState.NA,
                             info.ttl(),
                             info.expireTime(),
                             true,
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
index 0988ac2ccc5..2aa76f9bcbf 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
@@ -288,7 +288,7 @@ public class GridNearPessimisticTxPrepareFuture extends 
GridNearTxPrepareFutureA
      */
     @SuppressWarnings("unchecked")
     private void preparePessimistic() {
-        assert !tx.implicitSingle() || tx.txState().mvccEnabled(); // Non-mvcc 
implicit-single tx goes fast commit way.
+        assert !tx.implicitSingle();
 
         Map<UUID, GridDistributedTxMapping> mappings = new HashMap<>();
 
@@ -298,59 +298,45 @@ public class GridNearPessimisticTxPrepareFuture extends 
GridNearTxPrepareFutureA
 
         Map<UUID, Collection<UUID>> txNodes;
 
-        if (tx.txState().mvccEnabled()) {
-            Collection<GridDistributedTxMapping> mvccMappings = 
tx.implicitSingle()
-                ? Collections.singleton(tx.mappings().singleMapping()) : 
tx.mappings().mappings();
+        GridDhtTxMapping txMapping = new GridDhtTxMapping();
 
-            txNodes = new HashMap<>(mvccMappings.size());
+        for (IgniteTxEntry txEntry : tx.allEntries()) {
+            txEntry.clearEntryReadVersion();
 
-            for (GridDistributedTxMapping m : mvccMappings) {
-                mappings.put(m.primary().id(), m);
+            GridCacheContext cacheCtx = txEntry.context();
 
-                txNodes.put(m.primary().id(), m.backups());
-            }
-        }
-        else {
-            GridDhtTxMapping txMapping = new GridDhtTxMapping();
-
-            for (IgniteTxEntry txEntry : tx.allEntries()) {
-                txEntry.clearEntryReadVersion();
-
-                GridCacheContext cacheCtx = txEntry.context();
-
-                if (cacheCtx.isNear())
-                    hasNearCache = true;
+            if (cacheCtx.isNear())
+                hasNearCache = true;
 
-                List<ClusterNode> nodes;
+            List<ClusterNode> nodes;
 
-                GridDhtPartitionTopology top = cacheCtx.topology();
-                nodes = 
top.nodes(cacheCtx.affinity().partition(txEntry.key()), topVer);
+            GridDhtPartitionTopology top = cacheCtx.topology();
+            nodes = top.nodes(cacheCtx.affinity().partition(txEntry.key()), 
topVer);
 
-                if (F.isEmpty(nodes)) {
-                    onDone(new ClusterTopologyServerNotFoundException("Failed 
to map keys to nodes (partition " +
-                        "is not mapped to any node) [key=" + txEntry.key() +
-                        ", partition=" + 
cacheCtx.affinity().partition(txEntry.key()) + ", topVer=" + topVer + ']'));
+            if (F.isEmpty(nodes)) {
+                onDone(new ClusterTopologyServerNotFoundException("Failed to 
map keys to nodes (partition " +
+                    "is not mapped to any node) [key=" + txEntry.key() +
+                    ", partition=" + 
cacheCtx.affinity().partition(txEntry.key()) + ", topVer=" + topVer + ']'));
 
-                    return;
-                }
-
-                ClusterNode primary = nodes.get(0);
+                return;
+            }
 
-                GridDistributedTxMapping nodeMapping = 
mappings.get(primary.id());
+            ClusterNode primary = nodes.get(0);
 
-                if (nodeMapping == null)
-                    mappings.put(primary.id(), nodeMapping = new 
GridDistributedTxMapping(primary));
+            GridDistributedTxMapping nodeMapping = mappings.get(primary.id());
 
-                txEntry.nodeId(primary.id());
+            if (nodeMapping == null)
+                mappings.put(primary.id(), nodeMapping = new 
GridDistributedTxMapping(primary));
 
-                nodeMapping.add(txEntry);
+            txEntry.nodeId(primary.id());
 
-                txMapping.addMapping(nodes);
-            }
+            nodeMapping.add(txEntry);
 
-            txNodes = txMapping.transactionNodes();
+            txMapping.addMapping(nodes);
         }
 
+        txNodes = txMapping.transactionNodes();
+
         tx.transactionNodes(txNodes);
 
         if (!hasNearCache)
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
index 0d76760d1ed..8c3e954151b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
@@ -603,10 +603,6 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter 
implements GridTimeou
     ) {
         assert key != null;
 
-        if (cacheCtx.mvccEnabled())
-            return mvccPutAllAsync0(cacheCtx, Collections.singletonMap(key, 
val),
-                entryProc == null ? null : Collections.singletonMap(key, 
entryProc), invokeArgs, retval, filter);
-
         try {
             beforePut(cacheCtx, retval, false);
 
@@ -858,9 +854,6 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter 
implements GridTimeou
         @Nullable Map<KeyCacheObject, GridCacheDrInfo> drMap,
         final boolean retval
     ) {
-        if (cacheCtx.mvccEnabled())
-            return mvccPutAllAsync0(cacheCtx, map, invokeMap, invokeArgs, 
retval, null);
-
         try {
             beforePut(cacheCtx, retval, false);
         }
@@ -1703,9 +1696,6 @@ public class GridNearTxLocal extends 
GridDhtTxLocalAdapter implements GridTimeou
         final boolean retval,
         @Nullable final CacheEntryPredicate filter,
         boolean singleRmv) {
-        if (cacheCtx.mvccEnabled())
-            return mvccRemoveAllAsync0(cacheCtx, keys, retval, filter);
-
         try {
             checkUpdatesAllowed(cacheCtx);
         }
@@ -1929,87 +1919,6 @@ public class GridNearTxLocal extends 
GridDhtTxLocalAdapter implements GridTimeou
         }
     }
 
-    /**
-     * Internal method for remove operations in Mvcc mode.
-     *
-     * @param cacheCtx Cache context.
-     * @param keys Keys to remove.
-     * @param retval Flag indicating whether a value should be returned.
-     * @param filter Filter.
-     * @return Future for asynchronous remove.
-     */
-    @SuppressWarnings("unchecked")
-    private <K, V> IgniteInternalFuture<GridCacheReturn> mvccRemoveAllAsync0(
-        final GridCacheContext cacheCtx,
-        @Nullable final Collection<? extends K> keys,
-        final boolean retval,
-        @Nullable final CacheEntryPredicate filter
-    ) {
-        try {
-            MvccUtils.requestSnapshot(this);
-
-            beforeRemove(cacheCtx, retval);
-        }
-        catch (IgniteCheckedException e) {
-            return new GridFinishedFuture(e);
-        }
-
-        if (F.isEmpty(keys)) {
-            if (implicit()) {
-                try {
-                    commit();
-                }
-                catch (IgniteCheckedException e) {
-                    return new GridFinishedFuture<>(e);
-                }
-            }
-
-            return new GridFinishedFuture<>(new GridCacheReturn(localResult(), 
true));
-        }
-
-        init();
-
-        Set<KeyCacheObject> enlisted = new HashSet<>(keys.size());
-
-        try {
-            for (Object key : keys) {
-                if (isRollbackOnly())
-                    return new GridFinishedFuture<>(timedOut() ? 
timeoutException() : rollbackException());
-
-                if (key == null) {
-                    rollback();
-
-                    throw new NullPointerException("Null key.");
-                }
-
-                KeyCacheObject cacheKey = cacheCtx.toCacheKeyObject(key);
-
-                enlisted.add(cacheKey);
-            }
-
-        }
-        catch (IgniteCheckedException e) {
-            return new GridFinishedFuture(e);
-        }
-
-        return updateAsync(cacheCtx, new 
UpdateSourceIterator<KeyCacheObject>() {
-
-            private final Iterator<KeyCacheObject> it = enlisted.iterator();
-
-            @Override public EnlistOperation operation() {
-                return EnlistOperation.DELETE;
-            }
-
-            @Override public boolean hasNextX() {
-                return it.hasNext();
-            }
-
-            @Override public KeyCacheObject nextX() {
-                return it.next();
-            }
-        }, retval, filter, remainingTime());
-    }
-
     /**
      * @param cacheCtx Cache context.
      * @param cacheIds Involved cache ids.
@@ -2208,9 +2117,6 @@ public class GridNearTxLocal extends 
GridDhtTxLocalAdapter implements GridTimeou
         if (F.isEmpty(keys))
             return new GridFinishedFuture<>(Collections.emptyMap());
 
-        if (cacheCtx.mvccEnabled() && !isOperationAllowed(true))
-            return txTypeMismatchFinishFuture();
-
         init();
 
         int keysCnt = keys.size();
@@ -3327,14 +3233,7 @@ public class GridNearTxLocal extends 
GridDhtTxLocalAdapter implements GridTimeou
 
     /** {@inheritDoc} */
     @Override public boolean queryEnlisted() {
-        if (!txState.mvccEnabled())
-            return false;
-        else if (qryEnlisted)
-            return true;
-        else if (mappings.single())
-            return !mappings.empty() && mappings.singleMapping().queryUpdate();
-        else
-            return 
mappings.mappings().stream().anyMatch(GridDistributedTxMapping::queryUpdate);
+        return false;
     }
 
     /**
@@ -4811,15 +4710,12 @@ public class GridNearTxLocal extends 
GridDhtTxLocalAdapter implements GridTimeou
      * @throws IgniteCheckedException If failed.
      */
     private void beforePut(GridCacheContext cacheCtx, boolean retval, boolean 
mvccOp) throws IgniteCheckedException {
-        assert !mvccOp || cacheCtx.mvccEnabled();
+        assert !mvccOp;
 
         checkUpdatesAllowed(cacheCtx);
 
         cacheCtx.checkSecurity(SecurityPermission.CACHE_PUT);
 
-        if (cacheCtx.mvccEnabled() && !isOperationAllowed(mvccOp))
-            throw new IgniteCheckedException(TX_TYPE_MISMATCH_ERR_MSG);
-
         if (retval)
             needReturnValue(true);
 
@@ -4828,27 +4724,6 @@ public class GridNearTxLocal extends 
GridDhtTxLocalAdapter implements GridTimeou
         init();
     }
 
-    /**
-     * @param cacheCtx Cache context.
-     * @param retval Return value flag.
-     * @throws IgniteCheckedException If failed.
-     */
-    private void beforeRemove(GridCacheContext cacheCtx, boolean retval) 
throws IgniteCheckedException {
-        assert cacheCtx.mvccEnabled();
-
-        checkUpdatesAllowed(cacheCtx);
-
-        cacheCtx.checkSecurity(SecurityPermission.CACHE_REMOVE);
-
-        if (cacheCtx.mvccEnabled() && !isOperationAllowed(true))
-            throw new IgniteCheckedException(TX_TYPE_MISMATCH_ERR_MSG);
-
-        if (retval)
-            needReturnValue(true);
-
-        checkValid();
-    }
-
     /**
      * @param cacheCtx Cache context.
      * @throws IgniteCheckedException If updates are not allowed.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java
index 35d38aafc45..24ef5b65fbb 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java
@@ -175,7 +175,7 @@ public abstract class GridNearTxPrepareFutureAdapter extends
      * @param txNodes Primary to backups node map.
      */
     final void checkOnePhase(Map<UUID, Collection<UUID>> txNodes) {
-        if (tx.storeWriteThrough() || tx.txState().mvccEnabled()) // TODO 
IGNITE-3479 (onePhase + mvcc)
+        if (tx.storeWriteThrough())
             return;
 
         if (txNodes.size() == 1) {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java
index e23607f7065..b192559d215 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java
@@ -325,15 +325,7 @@ public class MvccProcessorImpl extends 
GridProcessorAdapter implements MvccProce
 
     /** {@inheritDoc} */
     @Override public void onCacheStop(final GridCacheContext cctx) {
-        if (cctx.mvccEnabled() && txLog != null) {
-            assert mvccEnabled && mvccSupported;
-
-            boolean hasMvccCaches = 
ctx.cache().cacheDescriptors().values().stream()
-                .anyMatch(c -> c.cacheConfiguration().getAtomicityMode() == 
TRANSACTIONAL_SNAPSHOT);
-
-            if (!hasMvccCaches)
-                stopTxLog();
-        }
+        // No-op.
     }
 
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccUtils.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccUtils.java
index 301cede38a8..29ca654c5d2 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccUtils.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccUtils.java
@@ -23,7 +23,6 @@ import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.TransactionConfiguration;
 import org.apache.ignite.internal.GridKernalContext;
 import 
org.apache.ignite.internal.cluster.ClusterTopologyServerNotFoundException;
-import org.apache.ignite.internal.pagemem.PageMemory;
 import org.apache.ignite.internal.processors.cache.CacheGroupContext;
 import org.apache.ignite.internal.processors.cache.GridCacheContext;
 import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal;
@@ -42,8 +41,6 @@ import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
 import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
-import static org.apache.ignite.internal.pagemem.PageIdUtils.itemId;
-import static org.apache.ignite.internal.pagemem.PageIdUtils.pageId;
 import static 
org.apache.ignite.internal.processors.cache.persistence.tree.io.DataPageIO.MVCC_INFO_SIZE;
 import static 
org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
 import static 
org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_READ;
@@ -588,32 +585,9 @@ public class MvccUtils {
      */
     private static <R> R invoke(GridCacheContext cctx, long link, 
MvccClosure<R> clo, MvccSnapshot snapshot)
         throws IgniteCheckedException {
-        assert cctx.mvccEnabled();
+        assert false; // ex mvcc code, should never happen
 
-        PageMemory pageMem = cctx.dataRegion().pageMemory();
-        int grpId = cctx.groupId();
-
-        int pageSize = pageMem.realPageSize(grpId);
-
-        long pageId = pageId(link);
-        int itemId = itemId(link);
-        long page = pageMem.acquirePage(grpId, pageId);
-
-        try {
-            long pageAddr = pageMem.readLock(grpId, pageId, page);
-
-            try {
-                DataPageIO dataIo = DataPageIO.VERSIONS.forPage(pageAddr);
-
-                return invoke(cctx, dataIo, pageAddr, itemId, pageSize, clo, 
snapshot);
-            }
-            finally {
-                pageMem.readUnlock(grpId, pageId, page);
-            }
-        }
-        finally {
-            pageMem.releasePage(grpId, pageId, page);
-        }
+        return null;
     }
 
     /**
@@ -662,18 +636,6 @@ public class MvccUtils {
         return invoke(cctx, dataIo, pageAddr, itemId, pageSize, isVisible, 
snapshot);
     }
 
-    /**
-     * Throw an {@link UnsupportedOperationException} if this cache is 
transactional and MVCC is enabled with
-     * appropriate message about corresponding operation type.
-     * @param cctx Cache context.
-     * @param opType operation type to mention in error message.
-     */
-    public static void verifyMvccOperationSupport(GridCacheContext<?, ?> cctx, 
String opType) {
-        if (cctx.mvccEnabled())
-            throw new UnsupportedOperationException(opType + " operations are 
not supported on transactional " +
-                "caches when MVCC is enabled.");
-    }
-
     /**
      * Checks transaction state.
      * @param tx Transaction.
@@ -788,25 +750,6 @@ public class MvccUtils {
         return ctx.coordinators().mvccEnabled();
     }
 
-    /**
-     * Initialises MVCC filter and returns MVCC query tracker if needed.
-     * @param cctx Cache context.
-     * @param autoStartTx Start transaction flag.
-     * @return MVCC query tracker.
-     * @throws IgniteCheckedException If failed.
-     */
-    @NotNull public static MvccQueryTracker mvccTracker(GridCacheContext cctx, 
boolean autoStartTx)
-        throws IgniteCheckedException {
-        assert cctx != null && cctx.mvccEnabled();
-
-        GridNearTxLocal tx = tx(cctx.kernalContext());
-
-        if (tx == null && autoStartTx)
-            tx = txStart(cctx, 0);
-
-        return mvccTracker(cctx, tx);
-    }
-
     /**
      * Initialises MVCC filter and returns MVCC query tracker if needed.
      * @param cctx Cache context.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
index 95a842c79cf..a54135394ad 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
@@ -179,9 +179,6 @@ public class GridCacheDistributedQueryManager<K, V> extends 
GridCacheQueryManage
      * @param req Query request.
      */
     @Override public void processQueryRequest(UUID sndId, 
GridCacheQueryRequest req) {
-        assert req.mvccSnapshot() != null || !cctx.mvccEnabled() || 
req.cancel() ||
-            (req.type() == null && !req.fields()) : req; // Last assertion 
means next page request.
-
         if (req.cancel()) {
             cancelIds.add(new CancelMessageId(req.id(), sndId));
 
@@ -548,7 +545,6 @@ public class GridCacheDistributedQueryManager<K, V> extends 
GridCacheQueryManage
     @Override public GridCloseableIterator scanQueryDistributed(final 
GridCacheQueryAdapter qry,
         Collection<ClusterNode> nodes) throws IgniteCheckedException {
         assert qry.type() == GridCacheQueryType.SCAN : qry;
-        assert qry.mvccSnapshot() != null || !cctx.mvccEnabled();
 
         boolean performanceStatsEnabled = 
cctx.kernalContext().performanceStatistics().enabled();
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
index 72c663327fb..2c22dec13e6 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
@@ -48,10 +48,8 @@ import 
org.apache.ignite.internal.processors.cache.GridCacheContext;
 import 
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheAdapter;
 import 
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtUnreservedPartitionException;
 import 
org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionTopology;
-import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal;
 import org.apache.ignite.internal.processors.cache.mvcc.MvccQueryTracker;
 import org.apache.ignite.internal.processors.cache.mvcc.MvccSnapshot;
-import org.apache.ignite.internal.processors.cache.mvcc.MvccUtils;
 import org.apache.ignite.internal.processors.query.QueryUtils;
 import org.apache.ignite.internal.util.GridCloseableIteratorAdapter;
 import org.apache.ignite.internal.util.GridEmptyCloseableIterator;
@@ -70,6 +68,7 @@ import org.apache.ignite.lang.IgniteReducer;
 import org.apache.ignite.plugin.security.SecurityPermission;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
+
 import static 
org.apache.ignite.internal.processors.cache.query.GridCacheQueryType.INDEX;
 import static 
org.apache.ignite.internal.processors.cache.query.GridCacheQueryType.SCAN;
 import static 
org.apache.ignite.internal.processors.cache.query.GridCacheQueryType.SET;
@@ -627,20 +626,6 @@ public class GridCacheQueryAdapter<T> implements 
CacheQuery<T> {
 
         MvccQueryTracker mvccTracker = null;
 
-        if (cctx.mvccEnabled() && mvccSnapshot == null) {
-            GridNearTxLocal tx = cctx.tm().userTx();
-
-            if (tx != null)
-                mvccSnapshot = MvccUtils.requestSnapshot(tx);
-            else {
-                mvccTracker = MvccUtils.mvccTracker(cctx, null);
-
-                mvccSnapshot = mvccTracker.snapshot();
-            }
-
-            assert mvccSnapshot != null;
-        }
-
         boolean loc = nodes.size() == 1 && 
F.first(nodes).id().equals(cctx.localNodeId());
 
         GridCloseableIterator it;
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
index a139361a2a9..64d6b9a5aa4 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
@@ -806,8 +806,6 @@ public abstract class GridCacheQueryManager<K, V> extends 
GridCacheManagerAdapte
     private GridCloseableIterator scanIterator(final GridCacheQueryAdapter<?> 
qry, IgniteClosure transformer,
         boolean locNode)
         throws IgniteCheckedException {
-        assert !cctx.mvccEnabled() || qry.mvccSnapshot() != null;
-
         final IgniteBiPredicate<K, V> keyValFilter = qry.scanFilter();
         final InternalScanFilter<K, V> intFilter = keyValFilter != null ? new 
InternalScanFilter<>(keyValFilter) : null;
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandler.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandler.java
index 2a506e1e895..af50b088f77 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandler.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandler.java
@@ -685,18 +685,7 @@ public class CacheContinuousQueryHandler<K, V> implements 
GridContinuousHandler
                 assert !skipEvt || evt == null;
                 assert skipEvt || part == -1 && cntr == -1; // part == -1 && 
cntr == -1 means skip counter.
 
-                if (!cctx.mvccEnabled())
-                    return true;
-
-                assert locInitUpdCntrs != null;
-
-                cntr = skipEvt ? cntr : evt.getPartitionUpdateCounter();
-                part = skipEvt ? part : evt.partitionId();
-
-                T2<Long, Long> initCntr = locInitUpdCntrs.get(part);
-
-                // Do not notify listener if entry was updated before the 
query is started.
-                return initCntr == null || cntr >= initCntr.get2();
+                return true;
             }
         };
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxImplicitSingleStateImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxImplicitSingleStateImpl.java
index ba02c928ed2..113f582c24c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxImplicitSingleStateImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxImplicitSingleStateImpl.java
@@ -72,7 +72,7 @@ public class IgniteTxImplicitSingleStateImpl extends 
IgniteTxLocalStateAdapter {
 
         tx.activeCachesDeploymentEnabled(cacheCtx.deploymentEnabled());
 
-        useMvccCaching = cacheCtx.mvccEnabled() && (cacheCtx.isDrEnabled() || 
cacheCtx.hasContinuousQueryListeners(tx));
+        useMvccCaching = false;
     }
 
     /** {@inheritDoc} */
@@ -316,11 +316,9 @@ public class IgniteTxImplicitSingleStateImpl extends 
IgniteTxLocalStateAdapter {
         return entry != null ? entry.get(0) : null;
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean mvccEnabled() {
-        GridCacheContext ctx0 = cacheCtx;
-
-        return ctx0 != null && ctx0.mvccEnabled();
+    /** MVCC Enabled */
+    public boolean mvccEnabled() {
+        return false;
     }
 
     /** {@inheritDoc} */
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
index 61245b29933..d34490e4461 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
@@ -404,9 +404,6 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter implements Ig
 
         try {
             cctx.tm().prepareTx(this, entries);
-
-            if (txState().mvccEnabled())
-                calculatePartitionUpdateCounters();
         }
         catch (IgniteCheckedException e) {
             throw e;
@@ -859,7 +856,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter implements Ig
                     }
                 }
 
-                if (!txState.mvccEnabled() && txCounters != null) {
+                if (txCounters != null) {
                     
cctx.tm().txHandler().applyPartitionsUpdatesCounters(txCounters.updateCounters());
 
                     for (IgniteTxEntry entry : commitEntries) {
@@ -1616,20 +1613,6 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter implements Ig
         return qryEnlisted;
     }
 
-    /**
-     * Marks that there are entries, enlisted by query.
-     */
-    public void markQueryEnlisted() {
-        assert mvccSnapshot != null && txState.mvccEnabled();
-
-        if (!qryEnlisted) {
-            qryEnlisted = true;
-
-            if (!cctx.localNode().isClient())
-                
cctx.coordinators().registerLocalTransaction(mvccSnapshot.coordinatorVersion(), 
mvccSnapshot.counter());
-        }
-    }
-
     /**
      * Post-lock closure alias.
      *
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
index 29b61efb7eb..cd1483f93d9 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
@@ -60,7 +60,6 @@ import 
org.apache.ignite.internal.managers.eventstorage.DiscoveryEventListener;
 import org.apache.ignite.internal.managers.eventstorage.HighPriorityListener;
 import 
org.apache.ignite.internal.managers.systemview.walker.TransactionViewWalker;
 import org.apache.ignite.internal.pagemem.wal.record.DataEntry;
-import org.apache.ignite.internal.pagemem.wal.record.MvccTxRecord;
 import org.apache.ignite.internal.pagemem.wal.record.TxRecord;
 import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
 import org.apache.ignite.internal.processors.cache.CacheObjectsReleaseFuture;
@@ -2800,12 +2799,7 @@ public class IgniteTxManager extends 
GridCacheSharedManagerAdapter {
 
         Map<Short, Collection<Short>> nodes = 
tx.consistentIdMapper.mapToCompactIds(tx.topVer, tx.txNodes, baselineTop);
 
-        TxRecord record;
-
-        if (tx.txState().mvccEnabled())
-            record = new MvccTxRecord(tx.state(), tx.nearXidVersion(), 
tx.writeVersion(), nodes, tx.mvccSnapshot());
-        else
-            record = new TxRecord(tx.state(), tx.nearXidVersion(), 
tx.writeVersion(), nodes);
+        TxRecord record = new TxRecord(tx.state(), tx.nearXidVersion(), 
tx.writeVersion(), nodes);
 
         try {
             return cctx.wal().log(record);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteStateAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteStateAdapter.java
index 675bad50037..da8a8dcb824 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteStateAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteStateAdapter.java
@@ -94,12 +94,8 @@ public abstract class IgniteTxRemoteStateAdapter implements 
IgniteTxRemoteState
         mvccEnabled = mvccTx;
 
         // Check if we can enlist new cache to transaction.
-        if (!activeCacheIds.contains(cacheId)) {
+        if (!activeCacheIds.contains(cacheId))
             activeCacheIds.add(cacheId);
-
-            if (cctx.mvccEnabled() && (cctx.hasContinuousQueryListeners(tx) || 
cctx.isDrEnabled()))
-                mvccCachingCacheIds.add(cacheId);
-        }
     }
 
     /** {@inheritDoc} */
@@ -134,8 +130,8 @@ public abstract class IgniteTxRemoteStateAdapter implements 
IgniteTxRemoteState
         assert false;
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean mvccEnabled() {
+    /** MVCC Enabled */
+    public boolean mvccEnabled() {
         return mvccEnabled;
     }
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxState.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxState.java
index 6feab42292e..0a32e96656f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxState.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxState.java
@@ -190,11 +190,6 @@ public interface IgniteTxState {
      */
     public boolean empty();
 
-    /**
-     * @return {@code True} if MVCC mode is enabled for transaction.
-     */
-    public boolean mvccEnabled();
-
     /**
      * @param cacheId Cache id.
      * @return {@code True} if it is need to store in the heap updates made by 
the current TX for the given cache.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxStateImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxStateImpl.java
index ba27e787a25..68422a5aaf0 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxStateImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxStateImpl.java
@@ -222,11 +222,7 @@ public class IgniteTxStateImpl extends 
IgniteTxLocalStateAdapter {
 
         this.recovery = recovery;
 
-        if (mvccEnabled != null && mvccEnabled != cacheCtx.mvccEnabled())
-            throw new IgniteCheckedException("Failed to enlist new cache to 
existing transaction " +
-                "(caches with different mvcc settings can't be enlisted in one 
transaction).");
-
-        mvccEnabled = cacheCtx.mvccEnabled();
+        mvccEnabled = false;
 
         // Check if we can enlist new cache to transaction.
         if (!activeCacheIds.contains(cacheId)) {
@@ -253,13 +249,9 @@ public class IgniteTxStateImpl extends 
IgniteTxLocalStateAdapter {
                     ", cacheSystem=" + cacheCtx.systemTx() +
                     ", txSystem=" + tx.system() + ']');
             }
-            else {
+            else
                 activeCacheIds.add(cacheId);
 
-                if (cacheCtx.mvccEnabled() && 
(cacheCtx.hasContinuousQueryListeners(tx) || cacheCtx.isDrEnabled()))
-                    mvccCachingCacheIds.add(cacheId);
-            }
-
             if (activeCacheIds.size() == 1)
                 tx.activeCachesDeploymentEnabled(cacheCtx.deploymentEnabled());
         }
@@ -490,8 +482,8 @@ public class IgniteTxStateImpl extends 
IgniteTxLocalStateAdapter {
         return writeView != null && writeView.size() == 1 ? 
F.firstValue(writeView) : null;
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean mvccEnabled() {
+    /** MVCC Enabled */
+    public boolean mvccEnabled() {
         return Boolean.TRUE == mvccEnabled;
     }
 
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
index 2d03c8ff932..df6d746c0de 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
@@ -294,12 +294,6 @@ public class GridCacheTestEntryEx extends 
GridMetadataAwareAdapter implements Gr
         return info;
     }
 
-    /** {@inheritDoc} */
-    @Nullable @Override public List<GridCacheEntryInfo> allVersionsInfo()
-        throws IgniteCheckedException {
-        return null;
-    }
-
     /** {@inheritDoc} */
     @Override public boolean valid(AffinityTopologyVersion topVer) {
         return true;
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheFailedUpdateResponseTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheFailedUpdateResponseTest.java
index cc0f4ed0757..ae4bc957bd6 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheFailedUpdateResponseTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheFailedUpdateResponseTest.java
@@ -38,7 +38,6 @@ import org.apache.ignite.cache.CachePartialUpdateException;
 import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.IgniteEx;
-import org.apache.ignite.internal.processors.cache.IgniteCacheProxy;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
@@ -140,7 +139,7 @@ public class IgniteCacheFailedUpdateResponseTest extends 
GridCommonAbstractTest
      * @param cache Cache.
      */
     private void testInvoke(final IgniteCache<Object, Object> cache) throws 
Exception {
-        Class<? extends Exception> exp = grid("client").transactions().tx() == 
null || ((IgniteCacheProxy)cache).context().mvccEnabled()
+        Class<? extends Exception> exp = grid("client").transactions().tx() == 
null
             ? EntryProcessorException.class
             : NonSerializableException.class;
 
@@ -176,7 +175,7 @@ public class IgniteCacheFailedUpdateResponseTest extends 
GridCommonAbstractTest
         assertNotNull(epRes);
 
         // In transactions EP will be invoked locally.
-        Class<? extends Exception> exp = grid("client").transactions().tx() == 
null || ((IgniteCacheProxy)cache).context().mvccEnabled()
+        Class<? extends Exception> exp = grid("client").transactions().tx() == 
null
             ? EntryProcessorException.class
             : NonSerializableException.class;
 
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/CommandProcessor.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/CommandProcessor.java
index 49278ed2a89..e3894254330 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/CommandProcessor.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/CommandProcessor.java
@@ -404,10 +404,6 @@ public class CommandProcessor extends SqlCommandProcessor {
 
                     assert cctx != null;
 
-                    if (cctx.mvccEnabled())
-                        throw new IgniteSQLException("Cannot drop column(s) 
with enabled MVCC. " +
-                            "Operation is unsupported at the moment.", 
IgniteQueryErrorCode.UNSUPPORTED_OPERATION);
-
                     if 
(QueryUtils.isSqlType(tbl.rowDescriptor().type().valueClass()))
                         throw new SchemaOperationException("Cannot drop 
column(s) because table was created " +
                             "with " + PARAM_WRAP_VALUE + "=false option.");
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Utils.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Utils.java
index bfc03a5f190..d6b59b8357d 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Utils.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Utils.java
@@ -52,7 +52,6 @@ import 
org.apache.ignite.internal.processors.cache.GridCacheContext;
 import org.apache.ignite.internal.processors.cache.GridCacheContextInfo;
 import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
 import org.apache.ignite.internal.processors.cache.QueryCursorImpl;
-import org.apache.ignite.internal.processors.cache.mvcc.MvccUtils;
 import org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode;
 import org.apache.ignite.internal.processors.odbc.jdbc.JdbcParameterMeta;
 import org.apache.ignite.internal.processors.query.GridQueryFieldMetadata;
@@ -815,44 +814,6 @@ public class H2Utils {
         return caches0.isEmpty() ? Collections.emptyList() : new 
ArrayList<>(caches0);
     }
 
-    /**
-     * Collect MVCC enabled flag.
-     *
-     * @param idx Indexing.
-     * @param cacheIds Cache IDs.
-     * @return {@code True} if indexing is enabled.
-     */
-    public static boolean collectMvccEnabled(IgniteH2Indexing idx, 
List<Integer> cacheIds) {
-        if (cacheIds.isEmpty())
-            return false;
-
-        GridCacheSharedContext sharedCtx = 
idx.kernalContext().cache().context();
-
-        GridCacheContext cctx0 = null;
-
-        boolean mvccEnabled = false;
-
-        for (int i = 0; i < cacheIds.size(); i++) {
-            Integer cacheId = cacheIds.get(i);
-
-            GridCacheContext cctx = sharedCtx.cacheContext(cacheId);
-
-            if (cctx == null) {
-                throw new IgniteSQLException("Failed to find cache [cacheId=" 
+ cacheId + ']',
-                    IgniteQueryErrorCode.TABLE_NOT_FOUND);
-            }
-
-            if (i == 0) {
-                mvccEnabled = cctx.mvccEnabled();
-                cctx0 = cctx;
-            }
-            else if (cctx.mvccEnabled() != mvccEnabled)
-                MvccUtils.throwAtomicityModesMismatchException(cctx0.config(), 
cctx.config());
-        }
-
-        return mvccEnabled;
-    }
-
     /**
      * Check if query is valid.
      *
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index 37559cc4758..681f019b843 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@ -61,7 +61,6 @@ import 
org.apache.ignite.internal.processors.cache.CacheOperationContext;
 import org.apache.ignite.internal.processors.cache.DynamicCacheDescriptor;
 import org.apache.ignite.internal.processors.cache.GridCacheContext;
 import org.apache.ignite.internal.processors.cache.GridCacheContextInfo;
-import org.apache.ignite.internal.processors.cache.KeyCacheObject;
 import org.apache.ignite.internal.processors.cache.QueryCursorImpl;
 import 
org.apache.ignite.internal.processors.cache.distributed.dht.IgniteClusterReadOnlyException;
 import 
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture;
@@ -159,9 +158,7 @@ import org.jetbrains.annotations.Nullable;
 import static java.lang.Math.max;
 import static java.lang.Math.min;
 import static java.util.Collections.singletonList;
-import static 
org.apache.ignite.IgniteSystemProperties.IGNITE_MVCC_TX_SIZE_CACHING_THRESHOLD;
 import static org.apache.ignite.events.EventType.EVT_SQL_QUERY_EXECUTION;
-import static 
org.apache.ignite.internal.processors.cache.mvcc.MvccCachingManager.TX_SIZE_THRESHOLD;
 import static 
org.apache.ignite.internal.processors.cache.mvcc.MvccUtils.checkActive;
 import static 
org.apache.ignite.internal.processors.cache.mvcc.MvccUtils.mvccEnabled;
 import static 
org.apache.ignite.internal.processors.cache.mvcc.MvccUtils.requestSnapshot;
@@ -1413,57 +1410,9 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
      * @return Query results cursor.
      */
     private Iterable<List<?>> lockSelectedRows(Iterable<List<?>> cur, 
GridCacheContext cctx, int pageSize, long timeout) {
-        assert cctx != null && cctx.mvccEnabled();
+        assert false; // ex mvcc code, should never happen
 
-        GridNearTxLocal tx = tx(ctx);
-
-        if (tx == null)
-            throw new IgniteSQLException("Failed to perform SELECT FOR UPDATE 
operation: transaction has already finished.");
-
-        Collection<List<?>> rowsCache = new ArrayList<>();
-
-        UpdateSourceIterator srcIt = new 
UpdateSourceIterator<KeyCacheObject>() {
-            private Iterator<List<?>> it = cur.iterator();
-
-            @Override public EnlistOperation operation() {
-                return EnlistOperation.LOCK;
-            }
-
-            @Override public boolean hasNextX() throws IgniteCheckedException {
-                return it.hasNext();
-            }
-
-            @Override public KeyCacheObject nextX() throws 
IgniteCheckedException {
-                List<?> res = it.next();
-
-                // nextX() can be called from the different threads.
-                synchronized (rowsCache) {
-                    rowsCache.add(res.subList(0, res.size() - 1));
-
-                    if (rowsCache.size() > TX_SIZE_THRESHOLD) {
-                        throw new IgniteCheckedException("Too many rows are 
locked by SELECT FOR UPDATE statement. " +
-                            "Consider locking fewer keys or increase the limit 
by setting a " +
-                            IGNITE_MVCC_TX_SIZE_CACHING_THRESHOLD + " system 
property. Current value is " +
-                            TX_SIZE_THRESHOLD + " rows.");
-                    }
-                }
-
-                // The last column is expected to be a _key.
-                return cctx.toCacheKeyObject(res.get(res.size() - 1));
-            }
-        };
-
-        IgniteInternalFuture<Long> fut = tx.updateAsync(cctx, srcIt, pageSize,
-            timeout, true);
-
-        try {
-            fut.get();
-        }
-        catch (IgniteCheckedException e) {
-            throw U.convertException(e);
-        }
-
-        return rowsCache;
+        return null;
     }
 
     /**
@@ -2293,7 +2242,7 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
             GridCacheContext<?, ?> cctx = plan.cacheContext();
 
             // For MVCC case, let's enlist batch elements one by one.
-            if (plan.hasRows() && plan.mode() == UpdateMode.INSERT && 
!cctx.mvccEnabled()) {
+            if (plan.hasRows() && plan.mode() == UpdateMode.INSERT) {
                 CacheOperationContext opCtx = 
DmlUtils.setKeepBinaryContext(cctx);
 
                 try {
@@ -2421,35 +2370,21 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
 
         GridCacheContext<?, ?> cctx = dml.plan().cacheContext();
 
-        boolean transactional = cctx != null && cctx.mvccEnabled();
-
-        int maxRetryCnt = transactional ? 1 : DFLT_UPDATE_RERUN_ATTEMPTS;
-
-        for (int i = 0; i < maxRetryCnt; i++) {
+        for (int i = 0; i < DFLT_UPDATE_RERUN_ATTEMPTS; i++) {
             CacheOperationContext opCtx = cctx != null ? 
DmlUtils.setKeepBinaryContext(cctx) : null;
 
             UpdateResult r;
 
             try {
-                if (transactional)
-                    r = executeUpdateTransactional(
-                        qryId,
-                        qryDesc,
-                        qryParams,
-                        dml,
-                        loc,
-                        cancel
-                    );
-                else
-                    r = executeUpdateNonTransactional(
-                        qryId,
-                        qryDesc,
-                        qryParams,
-                        dml,
-                        loc,
-                        filters,
-                        cancel
-                    );
+                r = executeUpdateNonTransactional(
+                    qryId,
+                    qryDesc,
+                    qryParams,
+                    dml,
+                    loc,
+                    filters,
+                    cancel
+                );
             }
             finally {
                 if (opCtx != null)
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
index 74025aded0e..63ac318fd84 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
@@ -109,8 +109,6 @@ public class H2PkHashIndex extends GridH2IndexBase {
             seg = qctx.segment();
         }
 
-        assert !cctx.mvccEnabled() || mvccSnapshot != null;
-
         KeyCacheObject lowerObj = lower != null ? 
cctx.toCacheKeyObject(lower.getValue(0).getObject()) : null;
         KeyCacheObject upperObj = upper != null ? 
cctx.toCacheKeyObject(upper.getValue(0).getObject()) : null;
 
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
index f49acd2c96c..832fb3e01fd 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
@@ -224,8 +224,6 @@ public class H2TreeIndex extends H2TreeIndexBase {
 
     /** */
     private IndexQueryContext idxQryContext(QueryContext qctx) {
-        assert qctx != null || !cctx.mvccEnabled();
-
         if (qctx == null)
             return null;
 
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
index 7c84d3bce04..99765a5395f 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
@@ -1840,9 +1840,6 @@ public class GridSqlQueryParser {
                     if (cctx == null)
                         return false;
 
-                    if (cctx.mvccEnabled())
-                        return false;
-
                     if (cctx.isPartitioned())
                         return false;
 
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index 9dec2c57491..bfa265d4474 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -51,6 +51,7 @@ import org.apache.ignite.internal.util.typedef.internal.U;
 import org.h2.command.Prepared;
 import org.h2.command.dml.Query;
 import org.h2.table.Column;
+
 import static 
org.apache.ignite.internal.processors.query.h2.opt.join.CollocationModel.isCollocated;
 import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlConst.TRUE;
 import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlFunctionType.AVG;
@@ -317,7 +318,6 @@ public class GridSqlQuerySplitter {
         }
 
         List<Integer> cacheIds = H2Utils.collectCacheIds(idx, null, 
splitter.tbls);
-        boolean mvccEnabled = H2Utils.collectMvccEnabled(idx, cacheIds);
         boolean replicatedOnly = 
splitter.mapSqlQrys.stream().noneMatch(GridCacheSqlQuery::isPartitioned);
         boolean treatReplicatedAsPartitioned = 
splitter.mapSqlQrys.stream().anyMatch(GridCacheSqlQuery::treatReplicatedAsPartitioned);
 
@@ -336,7 +336,7 @@ public class GridSqlQuerySplitter {
             replicatedOnly,
             splitter.extractor.mergeMapQueries(splitter.mapSqlQrys),
             cacheIds,
-            mvccEnabled,
+            false,
             locSplit,
             treatReplicatedAsPartitioned
         );
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CachePartitionedTest.cs
 
b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CachePartitionedTest.cs
index c9100b223aa..fc777917de8 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CachePartitionedTest.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CachePartitionedTest.cs
@@ -44,39 +44,5 @@ namespace Apache.Ignite.Core.Tests.Cache
         {
             return 1;
         }
-
-        /// <summary>
-        /// Test MVCC transaction.
-        /// </summary>
-        [Test]
-        public void TestMvccTransaction()
-        {
-            IIgnite ignite = GetIgnite(0);
-
-            ICache<int, int> cache = ignite.GetOrCreateCache<int, int>(new 
CacheConfiguration
-            {
-                Name = "mvcc",
-                AtomicityMode = CacheAtomicityMode.TransactionalSnapshot
-            });
-
-            ITransaction tx = ignite.GetTransactions().TxStart();
-
-            cache.Put(1, 1);
-            cache.Put(2, 2);
-
-            tx.Commit();
-
-            Assert.AreEqual(1, cache.Get(1));
-            Assert.AreEqual(2, cache.Get(2));
-
-            tx = ignite.GetTransactions().TxStart();
-
-            Assert.AreEqual(1, cache.Get(1));
-            Assert.AreEqual(2, cache.Get(2));
-
-            tx.Commit();
-
-            ignite.DestroyCache("mvcc");
-        }
     }
 }

Reply via email to