You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2019/02/26 12:31:28 UTC
[ignite] branch master updated: IGNITE-11171 Do not fail node when
transaction is concurrently rolled back - Fixes #6057.
This is an automated email from the ASF dual-hosted git repository.
agoncharuk 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 0421c46 IGNITE-11171 Do not fail node when transaction is concurrently rolled back - Fixes #6057.
0421c46 is described below
commit 0421c464d0088e235da26d88d229248502776aad
Author: Aleksei Scherbakov <al...@gmail.com>
AuthorDate: Tue Feb 26 15:26:12 2019 +0300
IGNITE-11171 Do not fail node when transaction is concurrently rolled back - Fixes #6057.
Signed-off-by: Alexey Goncharuk <al...@gmail.com>
---
.../cache/distributed/dht/GridDhtTransactionalCacheAdapter.java | 6 ++++--
.../processors/cache/distributed/dht/GridDhtTxPrepareFuture.java | 8 +++++---
.../cache/transactions/TxRollbackOnTimeoutOnePhaseCommitTest.java | 2 +-
3 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
index f295361..3fa51f0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
@@ -1441,11 +1441,13 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
req.keepBinary());
}
- assert e.lockedBy(mappedVer) || ctx.mvcc().isRemoved(e.context(), mappedVer) :
+ assert e.lockedBy(mappedVer) ||
+ ctx.mvcc().isRemoved(e.context(), mappedVer) ||
+ tx != null && tx.isRollbackOnly():
"Entry does not own lock for tx [locNodeId=" + ctx.localNodeId() +
", entry=" + e +
", mappedVer=" + mappedVer + ", ver=" + ver +
- ", tx=" + tx + ", req=" + req + ']';
+ ", tx=" + CU.txString(tx) + ", req=" + req + ']';
boolean filterPassed = false;
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 3453380..e8ed7af 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
@@ -534,9 +534,12 @@ public final class GridDhtTxPrepareFuture extends GridCacheCompoundFuture<Ignite
}
catch (IgniteCheckedException e) {
U.error(log, "Failed to get result value for cache entry: " + cached, e);
+
+ onError(e);
}
catch (GridCacheEntryRemovedException e) {
- assert false : "Got entry removed exception while holding transactional lock on entry [e=" + e + ", cached=" + cached + ']';
+ // Entry was unlocked by concurrent rollback.
+ onError(tx.rollbackException());
}
finally {
cctx.database().checkpointReadUnlock();
@@ -1977,8 +1980,7 @@ public final class GridDhtTxPrepareFuture extends GridCacheCompoundFuture<Ignite
lockKeys.clear();
}
- onError(new IgniteTxTimeoutCheckedException("Failed to acquire lock within " +
- "provided timeout for transaction [timeout=" + tx.timeout() + ", tx=" + tx + ']'));
+ onError(tx.timeoutException());
}
/** {@inheritDoc} */
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutOnePhaseCommitTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutOnePhaseCommitTest.java
index 1ba0761..28516e9 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutOnePhaseCommitTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutOnePhaseCommitTest.java
@@ -144,7 +144,7 @@ public class TxRollbackOnTimeoutOnePhaseCommitTest extends GridCommonAbstractTes
tx.commit();
- // fail(); // TODO IGNITE-10027 throw timeout exception for optimistic timeout.
+ fail();
}
catch (Exception e) {
assertTrue(e.getClass().getName(), X.hasCause(e, TransactionTimeoutException.class));