You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ni...@apache.org on 2019/05/23 11:53:13 UTC

[ignite] branch master updated: IGNITE-11697 Fixed rollback of suspended transaction on timeout (#6505)

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

nizhikov 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 1e9b38a  IGNITE-11697 Fixed rollback of suspended transaction on timeout (#6505)
1e9b38a is described below

commit 1e9b38af450e082a7f0fe8fc157a571dfe323aa2
Author: Alexey Plekhanov <33...@users.noreply.github.com>
AuthorDate: Thu May 23 14:52:57 2019 +0300

    IGNITE-11697 Fixed rollback of suspended transaction on timeout (#6505)
    
    Fixed rollback of suspended transaction on timeout
---
 .../processors/cache/distributed/near/GridNearTxLocal.java     | 10 ----------
 .../processors/cache/transactions/IgniteTxManager.java         |  6 ------
 .../cache/distributed/IgniteOptimisticTxSuspendResumeTest.java |  4 ++++
 3 files changed, 4 insertions(+), 16 deletions(-)

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 797221e..59bbbe5 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
@@ -126,7 +126,6 @@ import static org.apache.ignite.transactions.TransactionState.PREPARED;
 import static org.apache.ignite.transactions.TransactionState.PREPARING;
 import static org.apache.ignite.transactions.TransactionState.ROLLED_BACK;
 import static org.apache.ignite.transactions.TransactionState.ROLLING_BACK;
-import static org.apache.ignite.transactions.TransactionState.SUSPENDED;
 import static org.apache.ignite.transactions.TransactionState.UNKNOWN;
 
 /**
@@ -4832,15 +4831,6 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou
 
     /** {@inheritDoc} */
     @Override public void onTimeout() {
-        if (state() == SUSPENDED) {
-            try {
-                resume(false, threadId());
-            }
-            catch (IgniteCheckedException e) {
-                log.warning("Error resuming suspended transaction on timeout: " + this, e);
-            }
-        }
-
         boolean proceed;
 
         synchronized (this) {
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 6f2d594..06633b4 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
@@ -2437,8 +2437,6 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter {
         }
 
         clearThreadMap(tx);
-
-        transactionMap(tx).remove(tx.xidVersion(), tx);
     }
 
     /**
@@ -2462,15 +2460,11 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter {
         }
 
         assert !threadMap.containsValue(tx) : tx;
-        assert !transactionMap(tx).containsValue(tx) : tx;
         assert !haveSystemTxForThread(Thread.currentThread().getId());
 
         if (threadMap.putIfAbsent(threadId, tx) != null)
             throw new IgniteCheckedException("Thread already has started a transaction.");
 
-        if (transactionMap(tx).putIfAbsent(tx.xidVersion(), tx) != null)
-            throw new IgniteCheckedException("Thread already has started a transaction.");
-
         tx.threadId(threadId);
     }
 
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteOptimisticTxSuspendResumeTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteOptimisticTxSuspendResumeTest.java
index a1731cd..5545b59 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteOptimisticTxSuspendResumeTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteOptimisticTxSuspendResumeTest.java
@@ -484,6 +484,10 @@ public class IgniteOptimisticTxSuspendResumeTest extends GridCommonAbstractTest
 
                     assertEquals(ROLLED_BACK, tx.state());
 
+                    // Here we check that we can start any transactional operation in the same thread after a suspended
+                    // transaction is timed-out.
+                    assertFalse(cache.containsKey(1));
+
                     tx.close();
                 }
             }