IGNITE-6181 wip.

Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/225d4f52
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/225d4f52
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/225d4f52

Branch: refs/heads/ignite-6181-1
Commit: 225d4f52a777ac14d4a941f7eb9de505947962ff
Parents: 4c3df8f
Author: Aleksei Scherbakov <[email protected]>
Authored: Tue Sep 12 20:11:32 2017 +0300
Committer: Aleksei Scherbakov <[email protected]>
Committed: Tue Sep 12 20:11:32 2017 +0300

----------------------------------------------------------------------
 .../cache/distributed/near/GridNearTxLocal.java     |  6 ++++--
 .../cache/transactions/IgniteTxLocalAdapter.java    |  3 +++
 .../cache/transactions/TxRollbackOnTimeoutTest.java | 16 ++++++++++++++++
 3 files changed, 23 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/225d4f52/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
----------------------------------------------------------------------
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 aa0c85b..2308d71 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
@@ -230,7 +230,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter 
implements GridTimeou
 
         mappings = implicitSingle ? new IgniteTxMappingsSingleImpl() : new 
IgniteTxMappingsImpl();
 
-        if (this.timeout() > 0 && !implicit())
+        if (this.timeout() > 0 && !implicit() && 
!cctx.tm().deadlockDetectionEnabled())
             cctx.time().addTimeoutObject(this);
 
         initResult();
@@ -4014,7 +4014,7 @@ public class GridNearTxLocal extends 
GridDhtTxLocalAdapter implements GridTimeou
      * Removes timeout handler used for eager rollbacks on timeouts.
      */
     private void removeTimeoutHandler() {
-        if (timeout() > 0 && !implicit() && !timedOut())
+        if (timeout() > 0 && !implicit() && !timedOut() && 
!cctx.tm().deadlockDetectionEnabled())
             cctx.time().removeTimeoutObject(this);
     }
 
@@ -4033,6 +4033,8 @@ public class GridNearTxLocal extends 
GridDhtTxLocalAdapter implements GridTimeou
         if (state(MARKED_ROLLBACK, true)) {
             cctx.kernalContext().closure().runLocalSafe(new Runnable() {
                 @Override public void run() {
+                    log().error("Transaction is timed out and will be rolled 
back: " + GridNearTxLocal.this);
+
                     rollbackNearTxLocalAsync();
                 }
             });

http://git-wip-us.apache.org/repos/asf/ignite/blob/225d4f52/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
----------------------------------------------------------------------
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 ea105ae..7f30981 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
@@ -1237,6 +1237,9 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter implements Ig
      * @throws IgniteCheckedException If transaction check failed.
      */
     protected void checkValid() throws IgniteCheckedException {
+        if (local() && !dht() && remainingTime() == -1 && 
cctx.tm().deadlockDetectionEnabled())
+            state(MARKED_ROLLBACK, true);
+
         if (isRollbackOnly()) {
             if (remainingTime() == -1)
                 throw new IgniteTxTimeoutCheckedException("Cache transaction 
timed out: " + this);

http://git-wip-us.apache.org/repos/asf/ignite/blob/225d4f52/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java
index 529fdc3..0a2601d 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java
@@ -22,6 +22,7 @@ import javax.cache.CacheException;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
+import org.apache.ignite.IgniteSystemProperties;
 import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.configuration.TransactionConfiguration;
@@ -43,6 +44,7 @@ import org.jsr166.ThreadLocalRandom8;
 import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
 import static 
org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
 import static 
org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_READ;
+import static 
org.apache.ignite.IgniteSystemProperties.IGNITE_TX_DEADLOCK_DETECTION_MAX_ITERS;
 
 /**
  * Tests an ability to eagerly rollback timed out transactions.
@@ -95,6 +97,20 @@ public class TxRollbackOnTimeoutTest extends 
GridCommonAbstractTest {
     }
 
     /** {@inheritDoc} */
+    @Override protected void beforeTestsStarted() throws Exception {
+        super.beforeTestsStarted();
+
+        System.setProperty(IGNITE_TX_DEADLOCK_DETECTION_MAX_ITERS, "0");
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void afterTestsStopped() throws Exception {
+        super.afterTestsStopped();
+
+        System.clearProperty(IGNITE_TX_DEADLOCK_DETECTION_MAX_ITERS);
+    }
+
+    /** {@inheritDoc} */
     @Override protected void beforeTest() throws Exception {
         super.beforeTest();
 

Reply via email to