[33/50] [abbrv] ignite git commit: IGNITE-9246 Fixed infinite wait on topology future during tx remap - Fixes #4572.
IGNITE-9246 Fixed infinite wait on topology future during tx remap - Fixes #4572. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9fdf95a8 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9fdf95a8 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9fdf95a8 Branch: refs/heads/ignite-9273 Commit: 9fdf95a8b285fa4aeafd761ecc96f3e4e8ece76b Parents: 3882ec0 Author: Aleksei Scherbakov Authored: Mon Aug 27 15:39:07 2018 +0300 Committer: Alexey Goncharuk Committed: Mon Aug 27 15:39:07 2018 +0300 -- .../dht/GridDhtTransactionalCacheAdapter.java | 2 + .../colocated/GridDhtColocatedLockFuture.java | 65 +++--- ...arOptimisticSerializableTxPrepareFuture.java | 19 +- .../near/GridNearOptimisticTxPrepareFuture.java | 21 +- ...ridNearOptimisticTxPrepareFutureAdapter.java | 51 +++-- .../cache/transactions/IgniteTxHandler.java | 80 ++-- .../timeout/GridTimeoutProcessor.java | 94 + .../transactions/TxRollbackOnTimeoutTest.java | 199 ++- 8 files changed, 439 insertions(+), 92 deletions(-) -- http://git-wip-us.apache.org/repos/asf/ignite/blob/9fdf95a8/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java -- 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 11666c9..f93e6a3 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 @@ -695,6 +695,8 @@ public abstract class GridDhtTransactionalCacheAdapter extends GridDhtCach final IgniteThread thread = (IgniteThread)curThread; if (thread.cachePoolThread()) { +// Near transaction's finish on timeout will unlock topFut if it was held for too long, +// so need to listen with timeout. This is not true for optimistic transactions. topFut.listen(new CI1>() { @Override public void apply(IgniteInternalFuture fut) { ctx.kernalContext().closure().runLocalWithThreadPolicy(thread, new Runnable() { http://git-wip-us.apache.org/repos/asf/ignite/blob/9fdf95a8/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java -- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java index 27b3667..9dbb8be 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java @@ -864,19 +864,15 @@ public final class GridDhtColocatedLockFuture extends GridCacheCompoundIdentityF markInitialized(); } else { -fut.listen(new CI1>() { -@Override public void apply(IgniteInternalFuture fut) { -try { -fut.get(); +cctx.time().waitAsync(fut, tx == null ? 0 : tx.remainingTime(), (e, timedOut) -> { +if (errorOrTimeoutOnTopologyVersion(e, timedOut)) +return; -mapOnTopology(remap, c); -} -catch (IgniteCheckedException e) { -onDone(e); -} -finally { -cctx.shared().txContextReset(); -} +try { +mapOnTopology(remap, c); +} +finally { +cctx.shared().txContextReset(); } }); } @@ -1482,6 +1478,23 @@ public final class GridDhtColocatedLockFuture extends GridCacheCompoundIdentityF } /** + * @param e Exception. + * @param timedOut {@code True} if timed out. + */ +private boolean errorO
ignite git commit: IGNITE-9246 Fixed infinite wait on topology future during tx remap - Fixes #4572.
Repository: ignite Updated Branches: refs/heads/master 3882ec048 -> 9fdf95a8b IGNITE-9246 Fixed infinite wait on topology future during tx remap - Fixes #4572. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9fdf95a8 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9fdf95a8 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9fdf95a8 Branch: refs/heads/master Commit: 9fdf95a8b285fa4aeafd761ecc96f3e4e8ece76b Parents: 3882ec0 Author: Aleksei Scherbakov Authored: Mon Aug 27 15:39:07 2018 +0300 Committer: Alexey Goncharuk Committed: Mon Aug 27 15:39:07 2018 +0300 -- .../dht/GridDhtTransactionalCacheAdapter.java | 2 + .../colocated/GridDhtColocatedLockFuture.java | 65 +++--- ...arOptimisticSerializableTxPrepareFuture.java | 19 +- .../near/GridNearOptimisticTxPrepareFuture.java | 21 +- ...ridNearOptimisticTxPrepareFutureAdapter.java | 51 +++-- .../cache/transactions/IgniteTxHandler.java | 80 ++-- .../timeout/GridTimeoutProcessor.java | 94 + .../transactions/TxRollbackOnTimeoutTest.java | 199 ++- 8 files changed, 439 insertions(+), 92 deletions(-) -- http://git-wip-us.apache.org/repos/asf/ignite/blob/9fdf95a8/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java -- 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 11666c9..f93e6a3 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 @@ -695,6 +695,8 @@ public abstract class GridDhtTransactionalCacheAdapter extends GridDhtCach final IgniteThread thread = (IgniteThread)curThread; if (thread.cachePoolThread()) { +// Near transaction's finish on timeout will unlock topFut if it was held for too long, +// so need to listen with timeout. This is not true for optimistic transactions. topFut.listen(new CI1>() { @Override public void apply(IgniteInternalFuture fut) { ctx.kernalContext().closure().runLocalWithThreadPolicy(thread, new Runnable() { http://git-wip-us.apache.org/repos/asf/ignite/blob/9fdf95a8/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java -- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java index 27b3667..9dbb8be 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java @@ -864,19 +864,15 @@ public final class GridDhtColocatedLockFuture extends GridCacheCompoundIdentityF markInitialized(); } else { -fut.listen(new CI1>() { -@Override public void apply(IgniteInternalFuture fut) { -try { -fut.get(); +cctx.time().waitAsync(fut, tx == null ? 0 : tx.remainingTime(), (e, timedOut) -> { +if (errorOrTimeoutOnTopologyVersion(e, timedOut)) +return; -mapOnTopology(remap, c); -} -catch (IgniteCheckedException e) { -onDone(e); -} -finally { -cctx.shared().txContextReset(); -} +try { +mapOnTopology(remap, c); +} +finally { +cctx.shared().txContextReset(); } }); } @@ -1482,6 +1478,23 @@ public final class GridDhtColocatedLockFuture extends GridCacheCompoundIdentityF } /** + * @param e Exception. + * @p