You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2018/12/06 16:27:34 UTC
[46/50] [abbrv] ignite git commit: IGNITE-10355 Tx rollback failure
on put operations with caches whose topology fails validation - Fixes #5453.
IGNITE-10355 Tx rollback failure on put operations with caches whose topology fails validation - Fixes #5453.
Signed-off-by: Ivan Rakov <ir...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/bf75ef22
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/bf75ef22
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/bf75ef22
Branch: refs/heads/ignite-10044
Commit: bf75ef22d194c84c5cef99f5f28be221a4a468a8
Parents: d267236
Author: Dmitriy Sorokin <d....@gmail.com>
Authored: Thu Dec 6 17:43:27 2018 +0300
Committer: Ivan Rakov <ir...@apache.org>
Committed: Thu Dec 6 17:43:27 2018 +0300
----------------------------------------------------------------------
.../processors/cache/GridCacheUtils.java | 2 +-
.../cache/distributed/near/GridNearTxLocal.java | 21 +++++++++++++-------
2 files changed, 15 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/bf75ef22/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
----------------------------------------------------------------------
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 12b6566..ebc1d11 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
@@ -1317,7 +1317,7 @@ public class GridCacheUtils {
if (e instanceof CachePartialUpdateCheckedException)
return new CachePartialUpdateException((CachePartialUpdateCheckedException)e);
- else if (e instanceof ClusterTopologyServerNotFoundException)
+ else if (e.hasCause(ClusterTopologyServerNotFoundException.class))
return new CacheServerNotFoundException(e.getMessage(), e);
else if (e instanceof SchemaOperationException)
return new CacheException(e.getMessage(), e);
http://git-wip-us.apache.org/repos/asf/ignite/blob/bf75ef22/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 9f1f86d..ef74de4 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
@@ -3917,16 +3917,23 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou
fut.listen(new IgniteInClosure<IgniteInternalFuture<IgniteInternalTx>>() {
@Override public void apply(IgniteInternalFuture<IgniteInternalTx> fut0) {
if (FINISH_FUT_UPD.compareAndSet(tx, fut, rollbackFut)) {
- if (tx.state() == COMMITTED) {
- if (log.isDebugEnabled())
- log.debug("Failed to rollback, transaction is already committed: " + tx);
+ switch (tx.state()) {
+ case COMMITTED:
+ if (log.isDebugEnabled())
+ log.debug("Failed to rollback, transaction is already committed: " + tx);
+
+ // Fall-through.
- rollbackFut.forceFinish();
+ case ROLLED_BACK:
+ rollbackFut.forceFinish();
+
+ assert rollbackFut.isDone() : rollbackFut;
+
+ break;
- assert rollbackFut.isDone() : rollbackFut;
+ default: // First finish attempt was unsuccessful. Try again.
+ rollbackFut.finish(false, clearThreadMap, onTimeout);
}
- else // First finish attempt was unsuccessful. Try again.
- rollbackFut.finish(false, clearThreadMap, onTimeout);
}
else {
finishFut.listen(new IgniteInClosure<IgniteInternalFuture<IgniteInternalTx>>() {