Merge remote-tracking branch 'remotes/origin/master' into ignite-3478 # Conflicts: # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/NearTxFinishFuture.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteInternalTx.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0c4325a3 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0c4325a3 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0c4325a3 Branch: refs/heads/ignite-3479 Commit: 0c4325a3e2f49c44971a6dd6b14d73a15f26a84f Parents: 3ad260d Author: sboikov <sboi...@gridgain.com> Authored: Fri Sep 22 14:19:17 2017 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Fri Sep 22 14:19:17 2017 +0300 ---------------------------------------------------------------------- .../near/GridNearTxFastFinishFuture.java | 6 ++---- .../near/GridNearTxFinishAndAckFuture.java | 11 +++++++--- .../near/GridNearTxFinishFuture.java | 11 ++++------ .../cache/distributed/near/GridNearTxLocal.java | 22 ++++++++++---------- .../distributed/near/NearTxFinishFuture.java | 3 ++- 5 files changed, 27 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/0c4325a3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFastFinishFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFastFinishFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFastFinishFuture.java index 7222697..de30090 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFastFinishFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFastFinishFuture.java @@ -51,10 +51,8 @@ public class GridNearTxFastFinishFuture extends GridFutureAdapter<IgniteInternal return commit; } - /** - * - */ - public void finish() { + /** {@inheritDoc} */ + public void finish(boolean commit, boolean clearThreadMap) { try { if (commit) { tx.state(PREPARING); http://git-wip-us.apache.org/repos/asf/ignite/blob/0c4325a3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishAndAckFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishAndAckFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishAndAckFuture.java index b044e6f..8474ab7 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishAndAckFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishAndAckFuture.java @@ -40,9 +40,14 @@ public class GridNearTxFinishAndAckFuture extends GridFutureAdapter<IgniteIntern } /** {@inheritDoc} */ - public void finish(boolean commit) { + @Override public boolean commit() { + return finishFut.commit(); + } + + /** {@inheritDoc} */ + public void finish(boolean commit, boolean clearThreadMap) { if (commit) { - finishFut.finish(true); + finishFut.finish(true, clearThreadMap); finishFut.listen(new IgniteInClosure<GridNearTxFinishFuture>() { @Override public void apply(final GridNearTxFinishFuture fut) { @@ -87,7 +92,7 @@ public class GridNearTxFinishAndAckFuture extends GridFutureAdapter<IgniteIntern }); } else { - finishFut.finish(false); + finishFut.finish(false, clearThreadMap); finishFut.listen(new IgniteInClosure<IgniteInternalFuture>() { @Override public void apply(IgniteInternalFuture fut) { http://git-wip-us.apache.org/repos/asf/ignite/blob/0c4325a3/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 92f6b86..5f18e9b 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 @@ -402,15 +402,12 @@ public final class GridNearTxFinishFuture<K, V> extends GridCacheCompoundIdentit fut.getClass() == CheckRemoteTxMiniFuture.class; } - /** - * Initializes future. - * - * @param commit Commit flag. - * @param clearThreadMap If {@code true} removes {@link GridNearTxLocal} from thread map. - */ - @SuppressWarnings("ForLoopReplaceableByForEach") /** {@inheritDoc} */ + @SuppressWarnings("ForLoopReplaceableByForEach") public void finish(boolean commit, boolean clearThreadMap) { + if (!cctx.mvcc().addFuture(this, futureId())) + return; + if (tx.onNeedCheckBackup()) { assert tx.onePhaseCommit(); http://git-wip-us.apache.org/repos/asf/ignite/blob/0c4325a3/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 91e1c07..188200e 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 @@ -3199,6 +3199,12 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou commitNearTxLocalAsync().get(); } + private NearTxFinishFuture commitFuture() { + GridNearTxFinishFuture fut = new GridNearTxFinishFuture<>(cctx, this, true); + + return txState.mvccEnabled(cctx) ? new GridNearTxFinishAndAckFuture(fut) : fut; + } + /** * @return Finish future. */ @@ -3217,18 +3223,16 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou if (!FINISH_FUT_UPD.compareAndSet(this, null, fut0 = new GridNearTxFastFinishFuture(this, true))) return chainFinishFuture(finishFut, true); - fut0.finish(); + fut0.finish(true, true); return fut0; } - final GridNearTxFinishFuture fut0; + final NearTxFinishFuture fut0; - if (!FINISH_FUT_UPD.compareAndSet(this, null, fut0 = new GridNearTxFinishFuture<>(cctx, this, true))) + if (!FINISH_FUT_UPD.compareAndSet(this, null, fut0 = commitFuture())) return chainFinishFuture(finishFut, true); - cctx.mvcc().addFuture(fut0, fut0.futureId()); - final IgniteInternalFuture<?> prepareFut = prepareNearTxLocal(); prepareFut.listen(new CI1<IgniteInternalFuture<?>>() { @@ -3299,7 +3303,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou if (!FINISH_FUT_UPD.compareAndSet(this, null, fut0 = new GridNearTxFastFinishFuture(this, false))) return chainFinishFuture(finishFut, false); - fut0.finish(); + fut0.finish(false, onTimeout); return fut0; } @@ -3376,12 +3380,8 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou assert rollbackFut.isDone() : rollbackFut; } - else { - if (!cctx.mvcc().addFuture(rollbackFut, rollbackFut.futureId())) - return; - + else rollbackFut.finish(false, true); - } } } }); http://git-wip-us.apache.org/repos/asf/ignite/blob/0c4325a3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/NearTxFinishFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/NearTxFinishFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/NearTxFinishFuture.java index 9223c9f..19dca86 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/NearTxFinishFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/NearTxFinishFuture.java @@ -31,6 +31,7 @@ public interface NearTxFinishFuture extends IgniteInternalFuture<IgniteInternalT /** * @param commit {@code True} to commit, otherwise rollback. + * @param clearThreadMap If {@code true} removes {@link GridNearTxLocal} from thread map. */ - public void finish(boolean commit); + public void finish(boolean commit, boolean clearThreadMap); }