IGNITE-2264: Minor refactoring to GridDistributedTxMapping mapping handling.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/26719d3c Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/26719d3c Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/26719d3c Branch: refs/heads/ignite-961 Commit: 26719d3c1221177616a4f291b73950f69e5ed833 Parents: cbaa6e0 Author: vozerov-gridgain <[email protected]> Authored: Mon Feb 8 15:49:38 2016 +0300 Committer: vozerov-gridgain <[email protected]> Committed: Mon Feb 8 15:49:38 2016 +0300 ---------------------------------------------------------------------- .../distributed/dht/GridDhtTxPrepareFuture.java | 33 +++++----- ...arOptimisticSerializableTxPrepareFuture.java | 4 +- .../near/GridNearOptimisticTxPrepareFuture.java | 2 +- .../GridNearPessimisticTxPrepareFuture.java | 2 +- .../cache/distributed/near/GridNearTxLocal.java | 66 +++++++++++--------- 5 files changed, 56 insertions(+), 51 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/26719d3c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java index 4c783f7..732c298 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java @@ -1202,8 +1202,6 @@ public final class GridDhtTxPrepareFuture extends GridCompoundFuture<IgniteInter for (GridDistributedTxMapping nearMapping : tx.nearMap().values()) { if (!tx.dhtMap().containsKey(nearMapping.node().id())) { - assert nearMapping.writes() != null; - MiniFuture fut = new MiniFuture(nearMapping.node().id(), null, nearMapping); add(fut); // Append new future. @@ -1223,24 +1221,25 @@ public final class GridDhtTxPrepareFuture extends GridCompoundFuture<IgniteInter tx.taskNameHash(), tx.activeCachesDeploymentEnabled()); - for (IgniteTxEntry entry : nearMapping.writes()) { - try { - if (entry.explicitVersion() == null) { - GridCacheMvccCandidate added = entry.cached().candidate(version()); + for (IgniteTxEntry entry : nearMapping.entries()) { + if (CU.writes().apply(entry)) { + try { + if (entry.explicitVersion() == null) { + GridCacheMvccCandidate added = entry.cached().candidate(version()); - assert added != null : "Null candidate for non-group-lock entry " + - "[added=" + added + ", entry=" + entry + ']'; - assert added.dhtLocal() : "Got non-dht-local candidate for prepare future" + - "[added=" + added + ", entry=" + entry + ']'; + assert added != null : "Null candidate for non-group-lock entry " + + "[added=" + added + ", entry=" + entry + ']'; + assert added.dhtLocal() : "Got non-dht-local candidate for prepare future" + + "[added=" + added + ", entry=" + entry + ']'; - if (added != null && added.ownerVersion() != null) - req.owned(entry.txKey(), added.ownerVersion()); - } + if (added != null && added.ownerVersion() != null) + req.owned(entry.txKey(), added.ownerVersion()); + } - break; - } - catch (GridCacheEntryRemovedException ignore) { - assert false : "Got removed exception on entry with dht local candidate: " + entry; + break; + } catch (GridCacheEntryRemovedException ignore) { + assert false : "Got removed exception on entry with dht local candidate: " + entry; + } } } http://git-wip-us.apache.org/repos/asf/ignite/blob/26719d3c/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 52ebfc8..d5483cd 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 @@ -443,7 +443,7 @@ public class GridNearOptimisticSerializableTxPrepareFuture extends GridNearOptim m.clientFirst(), tx.activeCachesDeploymentEnabled()); - for (IgniteTxEntry txEntry : m.writes()) { + for (IgniteTxEntry txEntry : m.entries()) { if (txEntry.op() == TRANSFORM) req.addDhtVersion(txEntry.txKey(), null); } @@ -451,7 +451,7 @@ public class GridNearOptimisticSerializableTxPrepareFuture extends GridNearOptim // Must lock near entries separately. if (m.near()) { try { - tx.optimisticLockEntries(F.concat(false, m.writes(), m.reads())); + tx.optimisticLockEntries(m.entries()); tx.userPrepare(); } http://git-wip-us.apache.org/repos/asf/ignite/blob/26719d3c/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 b968e57..8476dc3 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 @@ -436,7 +436,7 @@ public class GridNearOptimisticTxPrepareFuture extends GridNearOptimisticTxPrepa m.clientFirst(), tx.activeCachesDeploymentEnabled()); - for (IgniteTxEntry txEntry : m.writes()) { + for (IgniteTxEntry txEntry : m.entries()) { if (txEntry.op() == TRANSFORM) req.addDhtVersion(txEntry.txKey(), null); } http://git-wip-us.apache.org/repos/asf/ignite/blob/26719d3c/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 615a92b..9adf580 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 @@ -230,7 +230,7 @@ public class GridNearPessimisticTxPrepareFuture extends GridNearTxPrepareFutureA false, tx.activeCachesDeploymentEnabled()); - for (IgniteTxEntry txEntry : m.writes()) { + for (IgniteTxEntry txEntry : m.entries()) { if (txEntry.op() == TRANSFORM) req.addDhtVersion(txEntry.txKey(), null); } http://git-wip-us.apache.org/repos/asf/ignite/blob/26719d3c/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 0853b77..a70fb3a 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 @@ -661,55 +661,61 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter { Collection<GridCacheVersion> committedVers, Collection<GridCacheVersion> rolledbackVers) { - readyNearLocks(mapping.writes(), mapping.dhtVersion(), pendingVers, committedVers, rolledbackVers); - readyNearLocks(mapping.reads(), mapping.dhtVersion(), pendingVers, committedVers, rolledbackVers); + // Process writes, then reads. + for (IgniteTxEntry txEntry : mapping.entries()) { + if (CU.writes().apply(txEntry)) + readyNearLock(txEntry, mapping.dhtVersion(), pendingVers, committedVers, rolledbackVers); + } + + for (IgniteTxEntry txEntry : mapping.entries()) { + if (CU.reads().apply(txEntry)) + readyNearLock(txEntry, mapping.dhtVersion(), pendingVers, committedVers, rolledbackVers); + } } /** - * @param entries Entries. + * @param txEntry TX entry. * @param dhtVer DHT version. * @param pendingVers Pending versions. * @param committedVers Committed versions. * @param rolledbackVers Rolled back versions. */ - void readyNearLocks(Collection<IgniteTxEntry> entries, + void readyNearLock(IgniteTxEntry txEntry, GridCacheVersion dhtVer, Collection<GridCacheVersion> pendingVers, Collection<GridCacheVersion> committedVers, Collection<GridCacheVersion> rolledbackVers) { - for (IgniteTxEntry txEntry : entries) { - while (true) { - GridCacheContext cacheCtx = txEntry.cached().context(); + while (true) { + GridCacheContext cacheCtx = txEntry.cached().context(); - assert cacheCtx.isNear(); + assert cacheCtx.isNear(); - GridDistributedCacheEntry entry = (GridDistributedCacheEntry)txEntry.cached(); + GridDistributedCacheEntry entry = (GridDistributedCacheEntry)txEntry.cached(); - try { - // Handle explicit locks. - GridCacheVersion explicit = txEntry.explicitVersion(); - - if (explicit == null) { - entry.readyNearLock(xidVer, - dhtVer, - committedVers, - rolledbackVers, - pendingVers); - } - - break; + try { + // Handle explicit locks. + GridCacheVersion explicit = txEntry.explicitVersion(); + + if (explicit == null) { + entry.readyNearLock(xidVer, + dhtVer, + committedVers, + rolledbackVers, + pendingVers); } - catch (GridCacheEntryRemovedException ignored) { - assert entry.obsoleteVersion() != null; - if (log.isDebugEnabled()) - log.debug("Replacing obsolete entry in remote transaction [entry=" + entry + - ", tx=" + this + ']'); + break; + } + catch (GridCacheEntryRemovedException ignored) { + assert entry.obsoleteVersion() != null; - // Replace the entry. - txEntry.cached(txEntry.context().cache().entryEx(txEntry.key())); - } + if (log.isDebugEnabled()) + log.debug("Replacing obsolete entry in remote transaction [entry=" + entry + + ", tx=" + this + ']'); + + // Replace the entry. + txEntry.cached(txEntry.context().cache().entryEx(txEntry.key())); } } }
