Minor (added more clear method IgniteTxHandler.prepareNearTxLocal).
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/e9a0d694 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/e9a0d694 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/e9a0d694 Branch: refs/heads/ignite-5757 Commit: e9a0d694867467400e295fe71dba4244d8b54ecd Parents: eb9d06d Author: sboikov <sboi...@gridgain.com> Authored: Thu Jul 27 15:25:06 2017 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Thu Jul 27 15:25:06 2017 +0300 ---------------------------------------------------------------------- ...arOptimisticSerializableTxPrepareFuture.java | 2 +- .../near/GridNearOptimisticTxPrepareFuture.java | 2 +- .../GridNearPessimisticTxPrepareFuture.java | 2 +- .../cache/transactions/IgniteTxHandler.java | 59 +++++++++++--------- 4 files changed, 35 insertions(+), 30 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/e9a0d694/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java index 72ddc67..d7b47de 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java @@ -574,7 +574,7 @@ public class GridNearOptimisticSerializableTxPrepareFuture extends GridNearOptim final MiniFuture fut, final boolean nearEntries) { IgniteInternalFuture<GridNearTxPrepareResponse> prepFut = nearEntries ? - cctx.tm().txHandler().prepareNearTx(cctx.localNodeId(), req, true) : + cctx.tm().txHandler().prepareNearTxLocal(req) : cctx.tm().txHandler().prepareColocatedTx(tx, req); prepFut.listen(new CI1<IgniteInternalFuture<GridNearTxPrepareResponse>>() { http://git-wip-us.apache.org/repos/asf/ignite/blob/e9a0d694/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java index edddf7d..df0d28e 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java @@ -564,7 +564,7 @@ public class GridNearOptimisticTxPrepareFuture extends GridNearOptimisticTxPrepa assert !(m.hasColocatedCacheEntries() && m.hasNearCacheEntries()) : m; IgniteInternalFuture<GridNearTxPrepareResponse> prepFut = - m.hasNearCacheEntries() ? cctx.tm().txHandler().prepareNearTx(n.id(), req, true) + m.hasNearCacheEntries() ? cctx.tm().txHandler().prepareNearTxLocal(req) : cctx.tm().txHandler().prepareColocatedTx(tx, req); prepFut.listen(new CI1<IgniteInternalFuture<GridNearTxPrepareResponse>>() { http://git-wip-us.apache.org/repos/asf/ignite/blob/e9a0d694/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java index e934319..2bcdade 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java @@ -237,7 +237,7 @@ public class GridNearPessimisticTxPrepareFuture extends GridNearTxPrepareFutureA add(fut); IgniteInternalFuture<GridNearTxPrepareResponse> prepFut = nearEntries ? - cctx.tm().txHandler().prepareNearTx(cctx.localNodeId(), req, true) : + cctx.tm().txHandler().prepareNearTxLocal(req) : cctx.tm().txHandler().prepareColocatedTx(tx, req); prepFut.listen(new CI1<IgniteInternalFuture<GridNearTxPrepareResponse>>() { http://git-wip-us.apache.org/repos/asf/ignite/blob/e9a0d694/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java index 34a9fc1..2ed8ed7 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java @@ -118,7 +118,19 @@ public class IgniteTxHandler { ", node=" + nearNodeId + ']'); } - IgniteInternalFuture<GridNearTxPrepareResponse> fut = prepareNearTx(nearNodeId, req, false); + ClusterNode nearNode = ctx.node(nearNodeId); + + if (nearNode == null) { + if (txPrepareMsgLog.isDebugEnabled()) { + txPrepareMsgLog.debug("Received near prepare from node that left grid (will ignore) [" + + "txId=" + req.version() + + ", node=" + nearNodeId + ']'); + } + + return; + } + + IgniteInternalFuture<GridNearTxPrepareResponse> fut = prepareNearTx(nearNode, req); assert req.txState() != null || fut == null || fut.error() != null || (ctx.tm().tx(req.version()) == null && ctx.tm().nearTx(req.version()) == null); @@ -278,32 +290,25 @@ public class IgniteTxHandler { } /** - * @param nearNodeId Near node ID that initiated transaction. - * @param req Near prepare request. - * @param locReq Local request flag. + * @param req Request. * @return Prepare future. */ - public IgniteInternalFuture<GridNearTxPrepareResponse> prepareNearTx( - final UUID nearNodeId, - final GridNearTxPrepareRequest req, - boolean locReq - ) { + public IgniteInternalFuture<GridNearTxPrepareResponse> prepareNearTxLocal(final GridNearTxPrepareRequest req) { // Make sure not to provide Near entries to DHT cache. - if (locReq) - req.cloneEntries(); - - ClusterNode nearNode = ctx.node(nearNodeId); + req.cloneEntries(); - if (nearNode == null) { - if (txPrepareMsgLog.isDebugEnabled()) { - txPrepareMsgLog.debug("Received near prepare from node that left grid (will ignore) [" + - "txId=" + req.version() + - ", node=" + nearNodeId + ']'); - } - - return null; - } + return prepareNearTx(ctx.localNode(), req); + } + /** + * @param nearNode Node that initiated transaction. + * @param req Near prepare request. + * @return Prepare future. + */ + private IgniteInternalFuture<GridNearTxPrepareResponse> prepareNearTx( + final ClusterNode nearNode, + final GridNearTxPrepareRequest req + ) { IgniteTxEntry firstEntry; try { @@ -350,7 +355,7 @@ public class IgniteTxHandler { if (txPrepareMsgLog.isDebugEnabled()) { txPrepareMsgLog.debug("Topology version mismatch for near prepare, need remap transaction [" + "txId=" + req.version() + - ", node=" + nearNodeId + + ", node=" + nearNode.id() + ", reqTopVer=" + req.topologyVersion() + ", locTopVer=" + top.topologyVersion() + ", req=" + req + ']'); @@ -370,24 +375,24 @@ public class IgniteTxHandler { req.deployInfo() != null); try { - ctx.io().send(nearNodeId, res, req.policy()); + ctx.io().send(nearNode, res, req.policy()); if (txPrepareMsgLog.isDebugEnabled()) { txPrepareMsgLog.debug("Sent remap response for near prepare [txId=" + req.version() + - ", node=" + nearNodeId + ']'); + ", node=" + nearNode.id() + ']'); } } catch (ClusterTopologyCheckedException ignored) { if (txPrepareMsgLog.isDebugEnabled()) { txPrepareMsgLog.debug("Failed to send remap response for near prepare, node failed [" + "txId=" + req.version() + - ", node=" + nearNodeId + ']'); + ", node=" + nearNode.id() + ']'); } } catch (IgniteCheckedException e) { U.error(txPrepareMsgLog, "Failed to send remap response for near prepare " + "[txId=" + req.version() + - ", node=" + nearNodeId + + ", node=" + nearNode.id() + ", req=" + req + ']', e); }