Repository: ignite Updated Branches: refs/heads/ignite-2.1 31e9d3b17 -> a668a224a
2.1 More simple tx cancel on node stop Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ab526713 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ab526713 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ab526713 Branch: refs/heads/ignite-2.1 Commit: ab5267134966b466a2d4bfba15d0c7e3ebe91139 Parents: 31e9d3b Author: sboikov <sboi...@gridgain.com> Authored: Fri Jul 7 13:14:18 2017 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Fri Jul 7 13:14:18 2017 +0300 ---------------------------------------------------------------------- .../processors/cache/GridCacheProcessor.java | 2 ++ .../cache/distributed/dht/GridDhtTxFinishFuture.java | 4 +++- .../distributed/near/GridNearTxFinishFuture.java | 4 ++-- .../cache/transactions/IgniteTxAdapter.java | 4 ++-- .../cache/transactions/IgniteTxLocalAdapter.java | 15 +++++++++------ 5 files changed, 18 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ab526713/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java ---------------------------------------------------------------------- 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 716482e..321e6dd 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 @@ -964,6 +964,8 @@ public class GridCacheProcessor extends GridProcessorAdapter { // No new caches should be added after this point. exch.onKernalStop(cancel); + sharedCtx.mvcc().onStop(); + for (CacheGroupContext grp : cacheGrps.values()) grp.onKernalStop(); http://git-wip-us.apache.org/repos/asf/ignite/blob/ab526713/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java index d8180b4..5311ddc 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java @@ -225,7 +225,9 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCacheCompoundIdentity if (this.tx.onePhaseCommit() && (this.tx.state() == COMMITTING)) { try { - this.tx.tmFinish(err == null); + boolean nodeStop = err != null && X.hasCause(err, NodeStoppingException.class); + + this.tx.tmFinish(err == null, nodeStop); } catch (IgniteCheckedException finishErr) { U.error(log, "Failed to finish tx: " + tx, e); http://git-wip-us.apache.org/repos/asf/ignite/blob/ab526713/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java index 7f6f793..c45eb7b 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java @@ -327,7 +327,7 @@ public final class GridNearTxFinishFuture<K, V> extends GridCacheCompoundIdentit finishOnePhase(commit); try { - tx.tmFinish(commit); + tx.tmFinish(commit, nodeStop); } catch (IgniteCheckedException e) { U.error(log, "Failed to finish tx: " + tx, e); @@ -338,7 +338,7 @@ public final class GridNearTxFinishFuture<K, V> extends GridCacheCompoundIdentit } if (super.onDone(tx0, err)) { - if (error() instanceof IgniteTxHeuristicCheckedException) { + if (error() instanceof IgniteTxHeuristicCheckedException && !nodeStop) { AffinityTopologyVersion topVer = tx.topologyVersion(); for (IgniteTxEntry e : tx.writeMap().values()) { http://git-wip-us.apache.org/repos/asf/ignite/blob/ab526713/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java index 51956ac..880d9b9 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java @@ -435,9 +435,9 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement break; } } - } - cctx.tm().uncommitTx(this); + cctx.tm().uncommitTx(this); + } } catch (Exception ex) { U.error(log, "Failed to do uncommit.", ex); http://git-wip-us.apache.org/repos/asf/ignite/blob/ab526713/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 49b67da..e7ebaae 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 @@ -898,17 +898,20 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig * Commits transaction to transaction manager. Used for one-phase commit transactions only. * * @param commit If {@code true} commits transaction, otherwise rollbacks. + * @param nodeStop If {@code true} tx is cancelled on node stop. * @throws IgniteCheckedException If failed. */ - public void tmFinish(boolean commit) throws IgniteCheckedException { + public void tmFinish(boolean commit, boolean nodeStop) throws IgniteCheckedException { assert onePhaseCommit(); if (DONE_FLAG_UPD.compareAndSet(this, 0, 1)) { - // Unlock all locks. - if (commit) - cctx.tm().commitTx(this); - else - cctx.tm().rollbackTx(this); + if (!nodeStop) { + // Unlock all locks. + if (commit) + cctx.tm().commitTx(this); + else + cctx.tm().rollbackTx(this); + } state(commit ? COMMITTED : ROLLED_BACK);