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 97eb3179e3b IGNITE-20508 DeadlockDetectionManager removal (#10959)
97eb3179e3b is described below

commit 97eb3179e3b15667ae7da8e2fea939839ab7a716
Author: Anton Vinogradov <a...@apache.org>
AuthorDate: Tue Oct 3 14:38:31 2023 +0300

    IGNITE-20508 DeadlockDetectionManager removal (#10959)
---
 .../ignite/codegen/MessageCodeGenerator.java       |   5 -
 .../configuration/TransactionConfiguration.java    |  47 ---
 .../org/apache/ignite/internal/IgniteKernal.java   |   4 +-
 .../ignite/internal/IgniteNodeAttributes.java      |   2 +-
 .../client/thin/ClientClusterGroupImpl.java        |  11 +-
 .../communication/GridIoMessageFactory.java        |   4 -
 .../processors/cache/GridCacheProcessor.java       |   4 -
 .../processors/cache/GridCacheSharedContext.java   |  17 -
 .../cache/ValidationOnNodeJoinUtils.java           |  52 +---
 .../cache/mvcc/DeadlockDetectionManager.java       | 343 ---------------------
 .../processors/cache/mvcc/DeadlockProbe.java       | 201 ------------
 .../processors/cache/mvcc/MvccProcessorImpl.java   |   7 -
 .../internal/processors/cache/mvcc/ProbedTx.java   | 239 --------------
 .../snapshot/IgniteSnapshotManager.java            |   2 +-
 .../wal/reader/IgniteWalIteratorFactory.java       |   2 +-
 .../platform/utils/PlatformConfigurationUtils.java |   3 +-
 .../handlers/top/GridTopologyCommandHandler.java   |   4 +-
 .../db/wal/IgniteWalIteratorSwitchSegmentTest.java |   2 -
 .../pagemem/BPlusTreePageMemoryImplTest.java       |   1 -
 .../BPlusTreeReuseListPageMemoryImplTest.java      |   1 -
 .../pagemem/IndexStoragePageMemoryImplTest.java    |   1 -
 .../pagemem/PageMemoryImplNoLoadTest.java          |   1 -
 .../persistence/pagemem/PageMemoryImplTest.java    |   1 -
 .../loadtests/hashmap/GridCacheTestContext.java    |   1 -
 .../Apache.Ignite.Core/IgniteConfiguration.cs      |   2 -
 .../IgniteConfigurationSection.xsd                 |   7 -
 .../Transactions/TransactionConfiguration.cs       |  15 -
 27 files changed, 27 insertions(+), 952 deletions(-)

diff --git 
a/modules/codegen/src/main/java/org/apache/ignite/codegen/MessageCodeGenerator.java
 
b/modules/codegen/src/main/java/org/apache/ignite/codegen/MessageCodeGenerator.java
index 2261acc9989..b5e5dee1e36 100644
--- 
a/modules/codegen/src/main/java/org/apache/ignite/codegen/MessageCodeGenerator.java
+++ 
b/modules/codegen/src/main/java/org/apache/ignite/codegen/MessageCodeGenerator.java
@@ -44,8 +44,6 @@ import org.apache.ignite.internal.GridDirectMap;
 import org.apache.ignite.internal.GridDirectTransient;
 import org.apache.ignite.internal.IgniteCodeGeneratingFail;
 import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
-import org.apache.ignite.internal.processors.cache.mvcc.DeadlockProbe;
-import org.apache.ignite.internal.processors.cache.mvcc.ProbedTx;
 import org.apache.ignite.internal.util.IgniteUtils;
 import org.apache.ignite.internal.util.typedef.internal.SB;
 import org.apache.ignite.internal.util.typedef.internal.U;
@@ -173,9 +171,6 @@ public class MessageCodeGenerator {
 
         MessageCodeGenerator gen = new MessageCodeGenerator(srcDir);
 
-        gen.generateAndWrite(ProbedTx.class);
-        gen.generateAndWrite(DeadlockProbe.class);
-
 //        gen.generateAll(true);
 
 //        gen.generateAndWrite(GridCacheMessage.class);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/configuration/TransactionConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/configuration/TransactionConfiguration.java
index 19f22fb0bec..06b06159282 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/configuration/TransactionConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/configuration/TransactionConfiguration.java
@@ -20,10 +20,8 @@ package org.apache.ignite.configuration;
 import java.io.Serializable;
 import java.util.ArrayList;
 import javax.cache.configuration.Factory;
-import org.apache.ignite.cache.CacheAtomicityMode;
 import org.apache.ignite.internal.util.TransientSerializable;
 import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.lang.IgniteExperimental;
 import org.apache.ignite.lang.IgniteProductVersion;
 import org.apache.ignite.transactions.Transaction;
 import org.apache.ignite.transactions.TransactionConcurrency;
@@ -58,9 +56,6 @@ public class TransactionConfiguration implements Serializable 
{
     /** Transaction timeout on partition map synchronization. */
     public static final long TX_TIMEOUT_ON_PARTITION_MAP_EXCHANGE = 0;
 
-    /** Default timeout before starting deadlock detection. */
-    public static final long DFLT_DEADLOCK_TIMEOUT = 10_000;
-
     /** 
       * Default size of pessimistic transactions log.
       * @deprecated Pessimistic tx log linger property has no effect.
@@ -85,9 +80,6 @@ public class TransactionConfiguration implements Serializable 
{
      */
     private volatile long txTimeoutOnPartitionMapExchange = 
TX_TIMEOUT_ON_PARTITION_MAP_EXCHANGE;
 
-    /** Timeout before starting deadlock detection. */
-    private long deadlockTimeout = DFLT_DEADLOCK_TIMEOUT;
-
     /** Pessimistic tx log size. */
     @Deprecated
     private int pessimisticTxLogSize;
@@ -123,7 +115,6 @@ public class TransactionConfiguration implements 
Serializable {
         dfltIsolation = cfg.getDefaultTxIsolation();
         dfltTxTimeout = cfg.getDefaultTxTimeout();
         txTimeoutOnPartitionMapExchange = 
cfg.getTxTimeoutOnPartitionMapExchange();
-        deadlockTimeout = cfg.getDeadlockTimeout();
         pessimisticTxLogLinger = cfg.getPessimisticTxLogLinger();
         pessimisticTxLogSize = cfg.getPessimisticTxLogSize();
         txSerEnabled = cfg.isTxSerializableEnabled();
@@ -260,44 +251,6 @@ public class TransactionConfiguration implements 
Serializable {
         return this;
     }
 
-    /**
-     * <b>This is an experimental feature. Transactional SQL is currently in a 
beta status.</b>
-     * <p>
-     * Transaction deadlocks occurred for caches configured with {@link 
CacheAtomicityMode#TRANSACTIONAL_SNAPSHOT}
-     * can be resolved automatically.
-     * <p>
-     * Deadlock detection starts when one transaction is waiting for an entry 
lock more than a timeout specified by
-     * this property.
-     * <p>
-     * Timeout is specified in milliseconds and {@code 0} means that automatic 
deadlock detection is disabled. Default
-     * value is defined by {@link #DFLT_DEADLOCK_TIMEOUT}.
-     *
-     * @return Timeout before starting deadlock detection.
-     */
-    @IgniteExperimental
-    public long getDeadlockTimeout() {
-        return deadlockTimeout;
-    }
-
-    /**
-     * <b>This is an experimental feature. Transactional SQL is currently in a 
beta status.</b>
-     * <p>
-     * Sets a timeout before starting deadlock detection for caches configured 
with
-     * {@link CacheAtomicityMode#TRANSACTIONAL_SNAPSHOT}.
-     * <p>
-     * Timeout is specified in milliseconds and {@code 0} means that automatic 
deadlock detection is disabled. Default
-     * value is defined by {@link #DFLT_DEADLOCK_TIMEOUT}.
-     *
-     * @param deadlockTimeout Timeout value in milliseconds.
-     * @return {@code this} for chaining.
-     */
-    @IgniteExperimental
-    public TransactionConfiguration setDeadlockTimeout(long deadlockTimeout) {
-        this.deadlockTimeout = deadlockTimeout;
-
-        return this;
-    }
-
     /**
      * Gets size of pessimistic transactions log stored on node in order to 
recover transaction commit if originating
      * node has left grid before it has sent all messages to transaction nodes.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index e61a1a8772f..538840c3bd3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -264,7 +264,7 @@ import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_RESTART_ENABL
 import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_REST_PORT_RANGE;
 import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_SHUTDOWN_POLICY;
 import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_SPI_CLASS;
-import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_TX_CONFIG;
+import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_TX_SERIALIZABLE_ENABLED;
 import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_USER_NAME;
 import static org.apache.ignite.internal.IgniteVersionUtils.BUILD_TSTAMP_STR;
 import static org.apache.ignite.internal.IgniteVersionUtils.COPYRIGHT;
@@ -1695,7 +1695,7 @@ public class IgniteKernal implements IgniteEx, 
Externalizable {
         addDataStorageConfigurationAttributes();
 
         // Save transactions configuration.
-        add(ATTR_TX_CONFIG, cfg.getTransactionConfiguration());
+        add(ATTR_TX_SERIALIZABLE_ENABLED, 
cfg.getTransactionConfiguration().isTxSerializableEnabled());
 
         // Supported features.
         add(ATTR_IGNITE_FEATURES, IgniteFeatures.allFeatures());
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java
index 5fa6cbed2d2..16b29e1a0f0 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java
@@ -79,7 +79,7 @@ public final class IgniteNodeAttributes {
     public static final String ATTR_CACHE = ATTR_PREFIX + ".cache";
 
     /** Internal attribute name constant. */
-    public static final String ATTR_TX_CONFIG = ATTR_PREFIX + ".tx";
+    public static final String ATTR_TX_SERIALIZABLE_ENABLED = ATTR_PREFIX + 
".tx.serializable.enabled";
 
     /** Internal attribute name constant. */
     public static final String ATTR_JMX_PORT = ATTR_PREFIX + ".jmx.port";
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterGroupImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterGroupImpl.java
index 0d8bf386c4f..b33a7caa1d7 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterGroupImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterGroupImpl.java
@@ -34,6 +34,7 @@ import java.util.concurrent.ThreadLocalRandom;
 import java.util.function.Function;
 import java.util.function.IntFunction;
 import java.util.function.Predicate;
+import org.apache.ignite.binary.BinaryObjectException;
 import org.apache.ignite.client.ClientClusterGroup;
 import org.apache.ignite.client.ClientException;
 import org.apache.ignite.client.ClientFeatureNotSupportedByServerException;
@@ -438,8 +439,14 @@ class ClientClusterGroupImpl implements ClientClusterGroup 
{
 
         Map<String, Object> attrs = new HashMap<>(attrCnt);
 
-        for (int i = 0; i < attrCnt; i++)
-            attrs.put(reader.readString(), reader.readObjectDetached());
+        for (int i = 0; i < attrCnt; i++) {
+            try {
+                attrs.put(reader.readString(), reader.readObjectDetached());
+            }
+            catch (BinaryObjectException ignored) {
+                // Skipping deserialization issues related to the incompatible 
classes from different versions.
+            }
+        }
 
         return attrs;
     }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
index 3c0c2fbc78f..e5e7ca0efa3 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
@@ -121,10 +121,8 @@ import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxQu
 import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxQueryResultsEnlistRequest;
 import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxQueryResultsEnlistResponse;
 import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearUnlockRequest;
-import org.apache.ignite.internal.processors.cache.mvcc.DeadlockProbe;
 import org.apache.ignite.internal.processors.cache.mvcc.MvccSnapshotWithoutTxs;
 import org.apache.ignite.internal.processors.cache.mvcc.MvccVersionImpl;
-import org.apache.ignite.internal.processors.cache.mvcc.ProbedTx;
 import 
org.apache.ignite.internal.processors.cache.mvcc.msg.MvccAckRequestQueryCntr;
 import 
org.apache.ignite.internal.processors.cache.mvcc.msg.MvccAckRequestQueryId;
 import org.apache.ignite.internal.processors.cache.mvcc.msg.MvccAckRequestTx;
@@ -372,8 +370,6 @@ public class GridIoMessageFactory implements 
MessageFactoryProvider {
         factory.register((short)167, ServiceDeploymentProcessId::new);
         factory.register((short)168, 
ServiceSingleNodeDeploymentResultBatch::new);
         factory.register((short)169, ServiceSingleNodeDeploymentResult::new);
-        factory.register((short)170, DeadlockProbe::new);
-        factory.register((short)171, ProbedTx::new);
         factory.register(GridQueryKillRequest.TYPE_CODE, 
GridQueryKillRequest::new);
         factory.register(GridQueryKillResponse.TYPE_CODE, 
GridQueryKillResponse::new);
         factory.register(GridIoSecurityAwareMessage.TYPE_CODE, 
GridIoSecurityAwareMessage::new);
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 4618afce95b..7524b9124c8 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
@@ -109,7 +109,6 @@ import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearAtom
 import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTransactionalCache;
 import org.apache.ignite.internal.processors.cache.dr.GridCacheDrManager;
 import org.apache.ignite.internal.processors.cache.jta.CacheJtaManagerAdapter;
-import 
org.apache.ignite.internal.processors.cache.mvcc.DeadlockDetectionManager;
 import org.apache.ignite.internal.processors.cache.mvcc.MvccCachingManager;
 import org.apache.ignite.internal.processors.cache.persistence.DataRegion;
 import 
org.apache.ignite.internal.processors.cache.persistence.DatabaseLifecycleListener;
@@ -3077,8 +3076,6 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
 
         MvccCachingManager mvccCachingMgr = new MvccCachingManager();
 
-        DeadlockDetectionManager deadlockDetectionMgr = new 
DeadlockDetectionManager();
-
         CacheDiagnosticManager diagnosticMgr = new CacheDiagnosticManager();
 
         return new GridCacheSharedContext(
@@ -3100,7 +3097,6 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
             jta,
             storeSesLsnrs,
             mvccCachingMgr,
-            deadlockDetectionMgr,
             diagnosticMgr,
             transMgr
         );
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
index 4b7ccb7fcd2..6811c5d660d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
@@ -49,7 +49,6 @@ import 
org.apache.ignite.internal.processors.cache.distributed.dht.topology.Grid
 import 
org.apache.ignite.internal.processors.cache.distributed.dht.topology.PartitionsEvictManager;
 import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal;
 import org.apache.ignite.internal.processors.cache.jta.CacheJtaManagerAdapter;
-import 
org.apache.ignite.internal.processors.cache.mvcc.DeadlockDetectionManager;
 import org.apache.ignite.internal.processors.cache.mvcc.MvccCachingManager;
 import org.apache.ignite.internal.processors.cache.mvcc.MvccProcessor;
 import org.apache.ignite.internal.processors.cache.persistence.DataRegion;
@@ -141,9 +140,6 @@ public class GridCacheSharedContext<K, V> {
     /** Mvcc caching manager. */
     private MvccCachingManager mvccCachingMgr;
 
-    /** Deadlock detection manager. */
-    private DeadlockDetectionManager deadlockDetectionMgr;
-
     /** Cache objects transformation manager. */
     private CacheObjectTransformerManager transMgr;
 
@@ -213,7 +209,6 @@ public class GridCacheSharedContext<K, V> {
      * @param jtaMgr JTA manager.
      * @param storeSesLsnrs Store session listeners.
      * @param mvccCachingMgr Mvcc caching manager.
-     * @param deadlockDetectionMgr Deadlock detection manager.
      */
     public GridCacheSharedContext(
         GridKernalContext kernalCtx,
@@ -234,7 +229,6 @@ public class GridCacheSharedContext<K, V> {
         CacheJtaManagerAdapter jtaMgr,
         Collection<CacheStoreSessionListener> storeSesLsnrs,
         MvccCachingManager mvccCachingMgr,
-        DeadlockDetectionManager deadlockDetectionMgr,
         CacheDiagnosticManager diagnosticMgr,
         CacheObjectTransformerManager transMgr
     ) {
@@ -259,7 +253,6 @@ public class GridCacheSharedContext<K, V> {
             ttlMgr,
             evictMgr,
             mvccCachingMgr,
-            deadlockDetectionMgr,
             diagnosticMgr,
             transMgr
         );
@@ -439,7 +432,6 @@ public class GridCacheSharedContext<K, V> {
             ttlMgr,
             evictMgr,
             mvccCachingMgr,
-            deadlockDetectionMgr,
             diagnosticMgr,
             transMgr
         );
@@ -490,7 +482,6 @@ public class GridCacheSharedContext<K, V> {
         GridCacheSharedTtlCleanupManager ttlMgr,
         PartitionsEvictManager evictMgr,
         MvccCachingManager mvccCachingMgr,
-        DeadlockDetectionManager deadlockDetectionMgr,
         CacheDiagnosticManager diagnosticMgr,
         CacheObjectTransformerManager transMgr
     ) {
@@ -515,7 +506,6 @@ public class GridCacheSharedContext<K, V> {
         this.ttlMgr = add(mgrs, ttlMgr);
         this.evictMgr = add(mgrs, evictMgr);
         this.mvccCachingMgr = add(mgrs, mvccCachingMgr);
-        this.deadlockDetectionMgr = add(mgrs, deadlockDetectionMgr);
         this.transMgr = add(mgrs, transMgr);
     }
 
@@ -886,13 +876,6 @@ public class GridCacheSharedContext<K, V> {
         return diagnosticMgr;
     }
 
-    /**
-     * @return Deadlock detection manager.
-     */
-    public DeadlockDetectionManager deadlockDetectionMgr() {
-        return deadlockDetectionMgr;
-    }
-
     /**
      * @return Cache objects transformation manager.
      */
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ValidationOnNodeJoinUtils.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ValidationOnNodeJoinUtils.java
index c0c0125aa59..841a4b77e14 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ValidationOnNodeJoinUtils.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ValidationOnNodeJoinUtils.java
@@ -70,6 +70,7 @@ import org.apache.ignite.spi.encryption.EncryptionSpi;
 import org.apache.ignite.spi.indexing.IndexingSpi;
 import org.apache.ignite.spi.indexing.noop.NoopIndexingSpi;
 import org.jetbrains.annotations.Nullable;
+
 import static 
org.apache.ignite.IgniteSystemProperties.IGNITE_SKIP_CONFIGURATION_CONSISTENCY_CHECK;
 import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
 import static 
org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL_SNAPSHOT;
@@ -81,7 +82,7 @@ import static 
org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_ASYNC;
 import static org.apache.ignite.configuration.DeploymentMode.ISOLATED;
 import static org.apache.ignite.configuration.DeploymentMode.PRIVATE;
 import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_CONSISTENCY_CHECK_SKIPPED;
-import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_TX_CONFIG;
+import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_TX_SERIALIZABLE_ENABLED;
 import static 
org.apache.ignite.internal.processors.cache.GridCacheUtils.isDefaultDataRegionPersistent;
 import static 
org.apache.ignite.internal.processors.security.SecurityUtils.nodeSecurityContext;
 
@@ -621,53 +622,20 @@ public class ValidationOnNodeJoinUtils {
         GridKernalContext ctx,
         IgniteLogger log
     ) throws IgniteCheckedException {
-        TransactionConfiguration rmtTxCfg = rmt.attribute(ATTR_TX_CONFIG);
+        Boolean rmtTxSer = rmt.attribute(ATTR_TX_SERIALIZABLE_ENABLED);
 
-        if (rmtTxCfg != null) {
+        if (rmtTxSer != null) {
             TransactionConfiguration locTxCfg = 
ctx.config().getTransactionConfiguration();
 
-            checkDeadlockDetectionConfig(rmt, rmtTxCfg, locTxCfg, log);
-
-            checkSerializableEnabledConfig(rmt, rmtTxCfg, locTxCfg);
-        }
-    }
-
-    /**
-     *
-     */
-    private static void checkDeadlockDetectionConfig(
-        ClusterNode rmt,
-        TransactionConfiguration rmtTxCfg,
-        TransactionConfiguration locTxCfg,
-        IgniteLogger log
-    ) {
-        boolean locDeadlockDetectionEnabled = locTxCfg.getDeadlockTimeout() > 
0;
-        boolean rmtDeadlockDetectionEnabled = rmtTxCfg.getDeadlockTimeout() > 
0;
-
-        if (locDeadlockDetectionEnabled != rmtDeadlockDetectionEnabled) {
-            U.warn(log, "Deadlock detection is enabled on one node and 
disabled on another. " +
-                "Disabled detection on one node can lead to undetected 
deadlocks. [rmtNodeId=" + rmt.id() +
-                ", locDeadlockTimeout=" + locTxCfg.getDeadlockTimeout() +
-                ", rmtDeadlockTimeout=" + rmtTxCfg.getDeadlockTimeout());
+            if (!rmtTxSer.equals(locTxCfg.isTxSerializableEnabled()))
+                throw new IgniteCheckedException("Serializable transactions 
enabled mismatch " +
+                    "(fix txSerializableEnabled property or set -D" + 
IGNITE_SKIP_CONFIGURATION_CONSISTENCY_CHECK + "=true " +
+                    "system property) [rmtNodeId=" + rmt.id() +
+                    ", locTxSerializableEnabled=" + 
locTxCfg.isTxSerializableEnabled() +
+                    ", rmtTxSerializableEnabled=" + rmtTxSer + ']');
         }
     }
 
-    /**
-     *
-     */
-    private static void checkSerializableEnabledConfig(
-        ClusterNode rmt,
-        TransactionConfiguration rmtTxCfg,
-        TransactionConfiguration locTxCfg
-    ) throws IgniteCheckedException {
-        if (locTxCfg.isTxSerializableEnabled() != 
rmtTxCfg.isTxSerializableEnabled())
-            throw new IgniteCheckedException("Serializable transactions 
enabled mismatch " +
-                "(fix txSerializableEnabled property or set -D" + 
IGNITE_SKIP_CONFIGURATION_CONSISTENCY_CHECK + "=true " +
-                "system property) [rmtNodeId=" + rmt.id() +
-                ", locTxSerializableEnabled=" + 
locTxCfg.isTxSerializableEnabled() +
-                ", rmtTxSerializableEnabled=" + 
rmtTxCfg.isTxSerializableEnabled() + ']');
-    }
-
     /**
      * @param rmt Remote node to check.
      * @param ctx Context.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/DeadlockDetectionManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/DeadlockDetectionManager.java
deleted file mode 100644
index 880a4cc71bb..00000000000
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/DeadlockDetectionManager.java
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.processors.cache.mvcc;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Optional;
-import java.util.Set;
-import java.util.UUID;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.IgniteInternalFuture;
-import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException;
-import 
org.apache.ignite.internal.processors.cache.GridCacheSharedManagerAdapter;
-import 
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxLocalAdapter;
-import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxAbstractEnlistFuture;
-import 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal;
-import 
org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
-import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
-import org.apache.ignite.internal.processors.timeout.GridTimeoutObjectAdapter;
-import 
org.apache.ignite.internal.transactions.IgniteTxRollbackCheckedException;
-
-import static java.util.Collections.singleton;
-import static org.apache.ignite.internal.GridTopic.TOPIC_DEADLOCK_DETECTION;
-import static 
org.apache.ignite.internal.managers.communication.GridIoPolicy.SYSTEM_POOL;
-import static 
org.apache.ignite.internal.processors.cache.mvcc.MvccUtils.belongToSameTx;
-
-/**
- * Component participating in deadlock detection in a cluster. Detection 
process is collaborative and it is performed
- * by relaying special probe messages from waiting transaction to it's blocker.
- * <p>
- * Ideas for used detection algorithm are borrowed from Chandy-Misra-Haas 
deadlock detection algorithm for resource
- * model.
- * <p>
- * Current implementation assumes that transactions obeys 2PL.
- */
-public class DeadlockDetectionManager extends GridCacheSharedManagerAdapter {
-    /** */
-    private long detectionStartDelay;
-
-    /** {@inheritDoc} */
-    @Override protected void start0() throws IgniteCheckedException {
-        detectionStartDelay = 
cctx.kernalContext().config().getTransactionConfiguration().getDeadlockTimeout();
-
-        cctx.gridIO().addMessageListener(TOPIC_DEADLOCK_DETECTION, (nodeId, 
msg, plc) -> {
-            if (msg instanceof DeadlockProbe) {
-                if (log.isDebugEnabled())
-                    log.debug("Received a probe message [msg=" + msg + ']');
-
-                DeadlockProbe msg0 = (DeadlockProbe)msg;
-
-                handleDeadlockProbe(msg0);
-            }
-            else
-                log.warning("Unexpected message received [node=" + nodeId + ", 
msg=" + msg + ']');
-        });
-    }
-
-    /**
-     * Starts a dedlock detection after a delay.
-     *
-     * @param waiterVer Version of the waiting transaction.
-     * @param blockerVer Version of the waited for transaction.
-     * @return Cancellable computation.
-     */
-    public DelayedDeadlockComputation initDelayedComputation(MvccVersion 
waiterVer, MvccVersion blockerVer) {
-        if (detectionStartDelay <= 0)
-            return null;
-
-        return new DelayedDeadlockComputation(waiterVer, blockerVer, 
detectionStartDelay);
-    }
-
-    /**
-     * Starts a deadlock detection for a given pair of transaction versions 
(wait-for edge).
-     *
-     * @param waiterVer Version of the waiting transaction.
-     * @param blockerVer Version of the waited for transaction.
-     */
-    private void startComputation(MvccVersion waiterVer, MvccVersion 
blockerVer) {
-        if (log.isDebugEnabled())
-            log.debug("Starting deadlock detection [waiterVer=" + waiterVer + 
", blockerVer=" + blockerVer + ']');
-
-        Optional<GridDhtTxLocalAdapter> waitingTx = findTx(waiterVer);
-
-        Optional<GridDhtTxLocalAdapter> blockerTx = findTx(blockerVer);
-
-        if (waitingTx.isPresent() && blockerTx.isPresent()) {
-            GridDhtTxLocalAdapter wTx = waitingTx.get();
-
-            GridDhtTxLocalAdapter bTx = blockerTx.get();
-
-            sendProbe(
-                bTx.eventNodeId(),
-                wTx.xidVersion(),
-                // real start time will be filled later when corresponding 
near node is visited
-                singleton(new ProbedTx(wTx.nodeId(), wTx.xidVersion(), 
wTx.nearXidVersion(), -1, wTx.lockCounter())),
-                new ProbedTx(bTx.nodeId(), bTx.xidVersion(), 
bTx.nearXidVersion(), -1, bTx.lockCounter()),
-                true);
-        }
-    }
-
-    /** */
-    private Optional<GridDhtTxLocalAdapter> findTx(MvccVersion mvccVer) {
-        return cctx.tm().activeTransactions().stream()
-            .filter(tx -> tx.local() && tx.mvccSnapshot() != null)
-            .filter(tx -> belongToSameTx(mvccVer, tx.mvccSnapshot()))
-            .map(GridDhtTxLocalAdapter.class::cast)
-            .findAny();
-    }
-
-    /**
-     * Handles received deadlock probe. Possible outcomes:
-     * <ol>
-     *     <li>Deadlock is found.</li>
-     *     <li>Probe is relayed to other blocking transactions.</li>
-     *     <li>Probe is discarded because receiving transaction is not 
blocked.</li>
-     * </ol>
-     *
-     * @param probe Received probe message.
-     */
-    private void handleDeadlockProbe(DeadlockProbe probe) {
-        if (probe.nearCheck())
-            handleDeadlockProbeForNear(probe);
-        else
-            handleDeadlockProbeForDht(probe);
-    }
-
-    /** */
-    private void handleDeadlockProbeForNear(DeadlockProbe probe) {
-        // a probe is simply discarded if next wait-for edge is not found
-        ProbedTx blocker = probe.blocker();
-
-        GridNearTxLocal nearTx = cctx.tm().tx(blocker.nearXidVersion());
-
-        if (nearTx == null)
-            return;
-
-        // probe each blocker
-        for (UUID pendingNodeId : getPendingResponseNodes(nearTx)) {
-            sendProbe(
-                pendingNodeId,
-                probe.initiatorVersion(),
-                probe.waitChain(),
-                // real start time is filled here
-                blocker.withStartTime(nearTx.startTime()),
-                false);
-        }
-    }
-
-    /** */
-    private void handleDeadlockProbeForDht(DeadlockProbe probe) {
-        // a probe is simply discarded if next wait-for edge is not found
-        cctx.tm().activeTransactions().stream()
-            .filter(IgniteInternalTx::local)
-            .filter(tx -> 
tx.nearXidVersion().equals(probe.blocker().nearXidVersion()))
-            .findAny()
-            .map(GridDhtTxLocalAdapter.class::cast)
-            .ifPresent(tx -> {
-                // search for locally checked tx (identified as blocker 
previously) in the wait chain
-                Optional<ProbedTx> repeatedTx = probe.waitChain().stream()
-                    .filter(wTx -> wTx.xidVersion().equals(tx.xidVersion()))
-                    .findAny();
-
-                if (repeatedTx.isPresent()) {
-                    // a deadlock found
-                    resolveDeadlock(probe, repeatedTx.get(), tx);
-                }
-                else
-                    relayProbeIfLocalTxIsWaiting(probe, tx);
-            });
-    }
-
-    /** */
-    private void resolveDeadlock(DeadlockProbe probe, ProbedTx repeatedTx, 
GridDhtTxLocalAdapter locTx) {
-        if (log.isDebugEnabled())
-            log.debug("Deadlock detected [probe=" + probe + ']');
-
-        ProbedTx victim = chooseVictim(
-            // real start time is filled here for repeated tx
-            repeatedTx.withStartTime(probe.blocker().startTime()),
-            probe.waitChain());
-
-        if (victim.xidVersion().equals(locTx.xidVersion())) {
-            if (log.isDebugEnabled())
-                log.debug("Chosen victim is on local node, tx will be aborted 
[victim=" + victim + ']');
-
-            // if a victim tx has made a progress since it was identified as 
waiting
-            // it means that detected deadlock was broken by other means (e.g. 
timeout of another tx)
-            if (victim.lockCounter() == locTx.lockCounter())
-                abortTx(locTx);
-        }
-        else {
-            if (log.isDebugEnabled())
-                log.debug("Chosen victim is on remote node, message will be 
sent [victim=" + victim + ']');
-
-            // destination node must determine itself as a victim
-            sendProbe(victim.nodeId(), probe.initiatorVersion(), 
singleton(victim), victim, false);
-        }
-    }
-
-    /** */
-    private void relayProbeIfLocalTxIsWaiting(DeadlockProbe probe, 
GridDhtTxLocalAdapter locTx) {
-        assert locTx.mvccSnapshot() != null;
-
-        cctx.coordinators().checkWaiting(locTx.mvccSnapshot())
-            .flatMap(this::findTx)
-            .ifPresent(nextBlocker -> {
-                ArrayList<ProbedTx> waitChain = new 
ArrayList<>(probe.waitChain().size() + 1);
-                waitChain.addAll(probe.waitChain());
-                // real start time is filled here
-                waitChain.add(new ProbedTx(locTx.nodeId(), locTx.xidVersion(), 
locTx.nearXidVersion(),
-                    probe.blocker().startTime(), locTx.lockCounter()));
-
-                // real start time will be filled later when corresponding 
near node is visited
-                ProbedTx nextProbedTx = new ProbedTx(nextBlocker.nodeId(), 
nextBlocker.xidVersion(),
-                    nextBlocker.nearXidVersion(), -1, 
nextBlocker.lockCounter());
-
-                sendProbe(
-                    nextBlocker.eventNodeId(),
-                    probe.initiatorVersion(),
-                    waitChain,
-                    nextProbedTx,
-                    true);
-            });
-    }
-
-    /**
-     * Chooses victim basing on tx start time. Algorithm chooses victim in 
such way that every site detected a deadlock
-     * will choose the same victim. As a result only one tx participating in a 
deadlock will be aborted.
-     * <p>
-     * Local tx is needed here because start time for it might not be filled 
yet for corresponding entry in wait chain.
-     *
-     * @param locTx Deadlocked tx on local node.
-     * @param waitChain Wait chain.
-     * @return Tx chosen as a victim.
-     */
-    @SuppressWarnings("StatementWithEmptyBody")
-    private ProbedTx chooseVictim(ProbedTx locTx, Collection<ProbedTx> 
waitChain) {
-        Iterator<ProbedTx> it = waitChain.iterator();
-
-        // skip until local tx (inclusive), because txs before are not 
deadlocked
-        while (it.hasNext() && 
!it.next().xidVersion().equals(locTx.xidVersion()));
-
-        ProbedTx victim = locTx;
-        long maxStartTime = locTx.startTime();
-
-        while (it.hasNext()) {
-            ProbedTx tx = it.next();
-
-            // seek for youngest tx in order to guarantee forward progress
-            if (tx.startTime() > maxStartTime) {
-                maxStartTime = tx.startTime();
-                victim = tx;
-            }
-            // tie-breaking
-            else if (tx.startTime() == maxStartTime && 
tx.nearXidVersion().compareTo(victim.nearXidVersion()) > 0)
-                victim = tx;
-        }
-
-        return victim;
-    }
-
-    /** */
-    private void abortTx(GridDhtTxLocalAdapter tx) {
-        cctx.coordinators().failWaiter(tx.mvccSnapshot(), new 
IgniteTxRollbackCheckedException(
-            "Deadlock detected. Transaction will be rolled back [tx=" + tx + 
']'));
-    }
-
-    /** */
-    private Set<UUID> getPendingResponseNodes(GridNearTxLocal tx) {
-        IgniteInternalFuture lockFut = tx.lockFuture();
-
-        if (lockFut instanceof GridNearTxAbstractEnlistFuture)
-            return 
((GridNearTxAbstractEnlistFuture<?>)lockFut).pendingResponseNodes();
-
-        return Collections.emptySet();
-    }
-
-    /** */
-    private void sendProbe(UUID destNodeId, GridCacheVersion initiatorVer, 
Collection<ProbedTx> waitChain,
-        ProbedTx blocker, boolean near) {
-
-        DeadlockProbe probe = new DeadlockProbe(initiatorVer, waitChain, 
blocker, near);
-
-        if (log.isDebugEnabled())
-            log.debug("Sending probe [probe=" + probe + ", destNode=" + 
destNodeId + ']');
-
-        try {
-            cctx.gridIO().sendToGridTopic(destNodeId, 
TOPIC_DEADLOCK_DETECTION, probe, SYSTEM_POOL);
-        }
-        catch (ClusterTopologyCheckedException ignored) {
-        }
-        catch (IgniteCheckedException e) {
-            log.warning("Failed to send a deadlock probe [nodeId=" + 
destNodeId + ']', e);
-        }
-    }
-
-    /**
-     * Delayed deadlock probe computation which can be cancelled.
-     */
-    public class DelayedDeadlockComputation extends GridTimeoutObjectAdapter {
-        /** */
-        private final MvccVersion waiterVer;
-
-        /** */
-        private final MvccVersion blockerVer;
-
-        /** {@inheritDoc} */
-        @Override public void onTimeout() {
-            startComputation(waiterVer, blockerVer);
-        }
-
-        /** */
-        private DelayedDeadlockComputation(MvccVersion waiterVer, MvccVersion 
blockerVer, long timeout) {
-            super(timeout);
-            this.waiterVer = waiterVer;
-            this.blockerVer = blockerVer;
-
-            cctx.kernalContext().timeout().addTimeoutObject(this);
-        }
-
-        /** */
-        public void cancel() {
-            cctx.kernalContext().timeout().removeTimeoutObject(this);
-        }
-    }
-}
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/DeadlockProbe.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/DeadlockProbe.java
deleted file mode 100644
index 582465c804e..00000000000
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/DeadlockProbe.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.processors.cache.mvcc;
-
-import java.nio.ByteBuffer;
-import java.util.Collection;
-import org.apache.ignite.internal.GridDirectCollection;
-import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
-import org.apache.ignite.internal.util.tostring.GridToStringInclude;
-import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.plugin.extensions.communication.Message;
-import 
org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
-
-/**
- * Probe message travelling between transactions (from waiting to blocking) 
during deadlock detection.
- * @see DeadlockDetectionManager
- */
-public class DeadlockProbe implements Message {
-    /** */
-    private static final long serialVersionUID = 0;
-
-    /** */
-    private GridCacheVersion initiatorVer;
-
-    /** */
-    @GridToStringInclude
-    @GridDirectCollection(ProbedTx.class)
-    private Collection<ProbedTx> waitChain;
-
-    /** */
-    private ProbedTx blocker;
-
-    /** */
-    private boolean nearCheck;
-
-    /** */
-    public DeadlockProbe() {
-    }
-
-    /** */
-    @SuppressWarnings("AssignmentOrReturnOfFieldWithMutableType")
-    public DeadlockProbe(GridCacheVersion initiatorVer, Collection<ProbedTx> 
waitChain,
-        ProbedTx blocker, boolean nearCheck) {
-        this.initiatorVer = initiatorVer;
-        this.waitChain = waitChain;
-        this.blocker = blocker;
-        this.nearCheck = nearCheck;
-    }
-
-    /**
-     * @return Identifier of a transaction started a deadlock detection 
process. Can be used for diagnostics.
-     */
-    public GridCacheVersion initiatorVersion() {
-        return initiatorVer;
-    }
-
-    /**
-     * @return Chain of transactions identified as waiting during deadlock 
detection.
-     */
-    @SuppressWarnings("AssignmentOrReturnOfFieldWithMutableType")
-    public Collection<ProbedTx> waitChain() {
-        return waitChain;
-    }
-
-    /**
-     * @return Identifier of a transaction identified as blocking last 
transaction in the wait chain
-     * during deadlock deteciton.
-     */
-    public ProbedTx blocker() {
-        return blocker;
-    }
-
-    /**
-     * @return {@code True} if checks if near transaction is waiting. {@code 
False} if checks dht transaction.
-     */
-    public boolean nearCheck() {
-        return nearCheck;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType(), fieldsCount()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeMessage("blocker", blocker))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeMessage("initiatorVer", initiatorVer))
-                    return false;
-
-                writer.incrementState();
-
-            case 2:
-                if (!writer.writeBoolean("nearCheck", nearCheck))
-                    return false;
-
-                writer.incrementState();
-
-            case 3:
-                if (!writer.writeCollection("waitChain", waitChain, 
MessageCollectionItemType.MSG))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!reader.beforeMessageRead())
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                blocker = reader.readMessage("blocker");
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                initiatorVer = reader.readMessage("initiatorVer");
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 2:
-                nearCheck = reader.readBoolean("nearCheck");
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 3:
-                waitChain = reader.readCollection("waitChain", 
MessageCollectionItemType.MSG);
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return reader.afterMessageRead(DeadlockProbe.class);
-    }
-
-    /** {@inheritDoc} */
-    @Override public short directType() {
-        return 170;
-    }
-
-    /** {@inheritDoc} */
-    @Override public byte fieldsCount() {
-        return 4;
-    }
-
-    /** {@inheritDoc} */
-    @Override public void onAckReceived() {
-    }
-
-    /** {@inheritDoc} */
-    @Override public String toString() {
-        return S.toString(DeadlockProbe.class, this);
-    }
-}
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 6ebcca49ed2..7c6e9deadf5 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
@@ -711,13 +711,6 @@ public class MvccProcessorImpl extends 
GridProcessorAdapter implements MvccProce
 
         if (!waiter.hasLocalTransaction() && (waiter = waitMap.remove(key)) != 
null)
             waiter.run(ctx);
-        else {
-            DeadlockDetectionManager.DelayedDeadlockComputation 
delayedComputation
-                = 
ctx.cache().context().deadlockDetectionMgr().initDelayedComputation(waiterVer, 
blockerVer);
-
-            if (delayedComputation != null)
-                fut.listen(delayedComputation::cancel);
-        }
 
         return fut;
     }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/ProbedTx.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/ProbedTx.java
deleted file mode 100644
index 879fbd0520c..00000000000
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/ProbedTx.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.processors.cache.mvcc;
-
-import java.nio.ByteBuffer;
-import java.util.UUID;
-import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
-import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.plugin.extensions.communication.Message;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
-
-/**
- * Contains attributes of tx visited during deadlock detection.
- */
-public class ProbedTx implements Message {
-    /** */
-    private static final long serialVersionUID = 0;
-
-    /** */
-    private UUID nodeId;
-
-    /** */
-    private GridCacheVersion xidVer;
-
-    /** */
-    private GridCacheVersion nearXidVer;
-
-    /** */
-    private long startTime;
-
-    /** */
-    private int lockCntr;
-
-    /** */
-    public ProbedTx() {
-    }
-
-    /**
-     * @param nodeId Node on which probed transaction runs.
-     * @param xidVer Identifier of transaction.
-     * @param nearXidVer Identifier of near transaction.
-     * @param startTime Transaction start time.
-     * @param lockCntr Number of locks acquired by probed transaction at a 
time of probe handling.
-     */
-    public ProbedTx(UUID nodeId, GridCacheVersion xidVer, GridCacheVersion 
nearXidVer, long startTime,
-        int lockCntr) {
-        this.nodeId = nodeId;
-        this.xidVer = xidVer;
-        this.nearXidVer = nearXidVer;
-        this.startTime = startTime;
-        this.lockCntr = lockCntr;
-    }
-
-    /**
-     * @return Node on which probed transaction runs.
-     */
-    public UUID nodeId() {
-        return nodeId;
-    }
-
-    /**
-     * @return Identifier of transaction.
-     */
-    public GridCacheVersion xidVersion() {
-        return xidVer;
-    }
-
-    /**
-     * @return Identifier of near transaction.
-     */
-    public GridCacheVersion nearXidVersion() {
-        return nearXidVer;
-    }
-
-    /**
-     * @return Transaction start time.
-     */
-    public long startTime() {
-        return startTime;
-    }
-
-    /**
-     * @return Number of locks acquired by probed transaction at a time of 
probe handling.
-     */
-    public int lockCounter() {
-        return lockCntr;
-    }
-
-    /**
-     * Creates a copy of this instance with modified transaction start time.
-     *
-     * @param updStartTime New start time value.
-     * @return Instance with updated start time.
-     */
-    public ProbedTx withStartTime(long updStartTime) {
-        return new ProbedTx(
-            nodeId,
-            xidVer,
-            nearXidVer,
-            updStartTime,
-            lockCntr
-        );
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType(), fieldsCount()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeInt("lockCntr", lockCntr))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeMessage("nearXidVer", nearXidVer))
-                    return false;
-
-                writer.incrementState();
-
-            case 2:
-                if (!writer.writeUuid("nodeId", nodeId))
-                    return false;
-
-                writer.incrementState();
-
-            case 3:
-                if (!writer.writeLong("startTime", startTime))
-                    return false;
-
-                writer.incrementState();
-
-            case 4:
-                if (!writer.writeMessage("xidVer", xidVer))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!reader.beforeMessageRead())
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                lockCntr = reader.readInt("lockCntr");
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                nearXidVer = reader.readMessage("nearXidVer");
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 2:
-                nodeId = reader.readUuid("nodeId");
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 3:
-                startTime = reader.readLong("startTime");
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 4:
-                xidVer = reader.readMessage("xidVer");
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return reader.afterMessageRead(ProbedTx.class);
-    }
-
-    /** {@inheritDoc} */
-    @Override public short directType() {
-        return 171;
-    }
-
-    /** {@inheritDoc} */
-    @Override public byte fieldsCount() {
-        return 5;
-    }
-
-    /** {@inheritDoc} */
-    @Override public void onAckReceived() {
-    }
-
-    /** {@inheritDoc} */
-    @Override public String toString() {
-        return S.toString(ProbedTx.class, this);
-    }
-}
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
index 157a1ea5c57..ff7bc60d947 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
@@ -2557,7 +2557,7 @@ public class IgniteSnapshotManager extends 
GridCacheSharedManagerAdapter
         GridCacheSharedContext<?, ?> sctx = new GridCacheSharedContext<>(ctx, 
null, null, null,
             null, null, null, null, null,
             null, null, null, null, null,
-            null, null, null, null, null, null, null);
+            null, null, null, null, null, null);
 
         return new DataPageIterator(sctx, coctx, pageStore, partId);
     }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/IgniteWalIteratorFactory.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/IgniteWalIteratorFactory.java
index 15a43b5a659..05c40db53bd 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/IgniteWalIteratorFactory.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/IgniteWalIteratorFactory.java
@@ -405,7 +405,7 @@ public class IgniteWalIteratorFactory {
             kernalCtx, null, null, null,
             null, null, null, dbMgr, null,
             null, null, null, null, null,
-            null, null, null, null, null, null, null
+            null, null, null, null, null, null
         );
     }
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
index baf18e59b82..1e5d0be4113 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
@@ -115,6 +115,7 @@ import org.apache.ignite.ssl.SslContextFactory;
 import org.apache.ignite.transactions.TransactionConcurrency;
 import org.apache.ignite.transactions.TransactionIsolation;
 import org.apache.ignite.util.AttributeNodeFilter;
+
 import static java.util.Optional.ofNullable;
 
 /**
@@ -885,7 +886,6 @@ public class PlatformConfigurationUtils {
             tx.setDefaultTxTimeout(in.readLong());
             tx.setPessimisticTxLogLinger(in.readInt());
             tx.setTxTimeoutOnPartitionMapExchange(in.readLong());
-            tx.setDeadlockTimeout(in.readLong());
 
             cfg.setTransactionConfiguration(tx);
         }
@@ -1503,7 +1503,6 @@ public class PlatformConfigurationUtils {
             w.writeLong(tx.getDefaultTxTimeout());
             w.writeInt(tx.getPessimisticTxLogLinger());
             w.writeLong(tx.getTxTimeoutOnPartitionMapExchange());
-            w.writeLong(tx.getDeadlockTimeout());
         }
         else
             w.writeBoolean(false);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java
index 7b0d046115b..3323e0b07ec 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java
@@ -59,7 +59,7 @@ import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_REST_TCP_HOST
 import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_REST_TCP_PORT;
 import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_SECURITY_CREDENTIALS;
 import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_SECURITY_SUBJECT_V2;
-import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_TX_CONFIG;
+import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_TX_SERIALIZABLE_ENABLED;
 import static org.apache.ignite.internal.processors.rest.GridRestCommand.NODE;
 import static 
org.apache.ignite.internal.processors.rest.GridRestCommand.TOPOLOGY;
 import static org.apache.ignite.internal.util.IgniteUtils.IGNITE_PKG;
@@ -291,7 +291,7 @@ public class GridTopologyCommandHandler extends 
GridRestCommandHandlerAdapter {
             Map<String, Object> attrs = new HashMap<>(node.attributes());
 
             attrs.remove(ATTR_CACHE);
-            attrs.remove(ATTR_TX_CONFIG);
+            attrs.remove(ATTR_TX_SERIALIZABLE_ENABLED);
             attrs.remove(ATTR_SECURITY_SUBJECT_V2);
             attrs.remove(ATTR_SECURITY_CREDENTIALS);
             attrs.remove(ATTR_BINARY_CONFIGURATION);
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalIteratorSwitchSegmentTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalIteratorSwitchSegmentTest.java
index 724a500a076..340a8a4b534 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalIteratorSwitchSegmentTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalIteratorSwitchSegmentTest.java
@@ -183,7 +183,6 @@ public class IgniteWalIteratorSwitchSegmentTest extends 
GridCommonAbstractTest {
                 null,
                 null,
                 null,
-                null,
                 null)
         ).createSerializer(serVer);
 
@@ -479,7 +478,6 @@ public class IgniteWalIteratorSwitchSegmentTest extends 
GridCommonAbstractTest {
             null,
             null,
             null,
-            null,
             null
         );
 
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/BPlusTreePageMemoryImplTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/BPlusTreePageMemoryImplTest.java
index 42339ada610..0d25bd5442e 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/BPlusTreePageMemoryImplTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/BPlusTreePageMemoryImplTest.java
@@ -95,7 +95,6 @@ public class BPlusTreePageMemoryImplTest extends 
BPlusTreeSelfTest {
             null,
             null,
             null,
-            null,
             new CacheDiagnosticManager(),
             null
         );
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/BPlusTreeReuseListPageMemoryImplTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/BPlusTreeReuseListPageMemoryImplTest.java
index d3a2718401d..16ddf83119e 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/BPlusTreeReuseListPageMemoryImplTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/BPlusTreeReuseListPageMemoryImplTest.java
@@ -95,7 +95,6 @@ public class BPlusTreeReuseListPageMemoryImplTest extends 
BPlusTreeReuseSelfTest
             null,
             null,
             null,
-            null,
             null
         );
 
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/IndexStoragePageMemoryImplTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/IndexStoragePageMemoryImplTest.java
index 763abc787fd..0e92905efaf 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/IndexStoragePageMemoryImplTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/IndexStoragePageMemoryImplTest.java
@@ -110,7 +110,6 @@ public class IndexStoragePageMemoryImplTest extends 
IndexStorageSelfTest {
             null,
             null,
             null,
-            null,
             new CacheDiagnosticManager(),
             null
         );
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImplNoLoadTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImplNoLoadTest.java
index df0bd11eb11..b67cc8aca89 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImplNoLoadTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImplNoLoadTest.java
@@ -100,7 +100,6 @@ public class PageMemoryImplNoLoadTest extends 
PageMemoryNoLoadSelfTest {
             null,
             null,
             null,
-            null,
             null
         );
 
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImplTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImplTest.java
index ff8f98ef2c6..8090393028d 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImplTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImplTest.java
@@ -631,7 +631,6 @@ public class PageMemoryImplTest extends 
GridCommonAbstractTest {
             null,
             null,
             null,
-            null,
             null
         );
 
diff --git 
a/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java
 
b/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java
index 6d21728e87c..1a632db0fc1 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java
@@ -83,7 +83,6 @@ public class GridCacheTestContext<K, V> extends 
GridCacheContext<K, V> {
                 new CacheNoopJtaManager(),
                 null,
                 null,
-                null,
                 new CacheDiagnosticManager(),
                 null
             ),
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs 
b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
index 8df7aa33d1c..7e95ee85cda 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
@@ -488,7 +488,6 @@ namespace Apache.Ignite.Core
                 writer.WriteLong((long) 
TransactionConfiguration.DefaultTimeout.TotalMilliseconds);
                 writer.WriteInt((int) 
TransactionConfiguration.PessimisticTransactionLogLinger.TotalMilliseconds);
                 writer.WriteLong((long) 
TransactionConfiguration.DefaultTimeoutOnPartitionMapExchange.TotalMilliseconds);
-                writer.WriteLong((long) 
TransactionConfiguration.DeadlockTimeout.TotalMilliseconds);
             }
             else
                 writer.WriteBoolean(false);
@@ -825,7 +824,6 @@ namespace Apache.Ignite.Core
                     DefaultTimeout = TimeSpan.FromMilliseconds(r.ReadLong()),
                     PessimisticTransactionLogLinger = 
TimeSpan.FromMilliseconds(r.ReadInt()),
                     DefaultTimeoutOnPartitionMapExchange = 
TimeSpan.FromMilliseconds(r.ReadLong()),
-                    DeadlockTimeout = TimeSpan.FromMilliseconds(r.ReadLong())
                 };
             }
 
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd 
b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd
index 1b95ed09ae0..7ca5b11c7a2 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd
@@ -1370,13 +1370,6 @@
                                 </xs:documentation>
                             </xs:annotation>
                         </xs:attribute>
-                        <xs:attribute name="deadlockTimeout" type="xs:string">
-                            <xs:annotation>
-                                <xs:documentation>
-                                    Timeout before starting deadlock 
detection. TimeSpan.Zero for disabling deadlock detection.
-                                </xs:documentation>
-                            </xs:annotation>
-                        </xs:attribute>
                     </xs:complexType>
                 </xs:element>
                 <xs:element name="logger" minOccurs="0">
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Core/Transactions/TransactionConfiguration.cs
 
b/modules/platforms/dotnet/Apache.Ignite.Core/Transactions/TransactionConfiguration.cs
index 77c1e881b55..31006c92529 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite.Core/Transactions/TransactionConfiguration.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite.Core/Transactions/TransactionConfiguration.cs
@@ -44,9 +44,6 @@ namespace Apache.Ignite.Core.Transactions
         /// <summary> The default value for <see 
cref="DefaultTimeoutOnPartitionMapExchange"/></summary>
         public static readonly TimeSpan 
DefaultDefaultTimeoutOnPartitionMapExchange = TimeSpan.Zero;
 
-        /// <summary> The default value for <see 
cref="DeadlockTimeout"/></summary>
-        public static readonly TimeSpan DefaultDeadlockTimeout = 
TimeSpan.FromSeconds(10);
-
         /// <summary>
         /// Gets or sets the cache transaction concurrency to use when one is 
not explicitly specified.
         /// </summary>
@@ -87,17 +84,6 @@ namespace Apache.Ignite.Core.Transactions
         [DefaultValue(typeof(TimeSpan), "00:00:00")]
         public TimeSpan DefaultTimeoutOnPartitionMapExchange { get; set; }
 
-        /// <summary>
-        /// This is an experimental feature. Transactional SQL is currently in 
a beta status.
-        /// <para/>
-        /// Gets or sets timeout before starting deadlock detection for caches 
configured with
-        /// <code>TransactionalSnapshot</code> cache atomicity mode.
-        /// <see cref="TimeSpan.Zero"/> for disabling deadlock detection.
-        /// </summary>
-        [DefaultValue(typeof(TimeSpan), "00:00:10")]
-        [IgniteExperimental]
-        public TimeSpan DeadlockTimeout { get; set; }
-
         /// <summary>
         /// Initializes a new instance of the <see 
cref="TransactionConfiguration" /> class.
         /// </summary>
@@ -109,7 +95,6 @@ namespace Apache.Ignite.Core.Transactions
             PessimisticTransactionLogSize = 
DefaultPessimisticTransactionLogSize;
             PessimisticTransactionLogLinger = 
DefaultPessimisticTransactionLogLinger;
             DefaultTimeoutOnPartitionMapExchange = 
DefaultDefaultTimeoutOnPartitionMapExchange;
-            DeadlockTimeout = DefaultDeadlockTimeout;
         }
     }
 }

Reply via email to