Merge remote-tracking branch 'remotes/origin/ignite-5075-cacheStart' into ignite-5075
# Conflicts: # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentResponse.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAssignmentFetchFuture.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/aee10316 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/aee10316 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/aee10316 Branch: refs/heads/ignite-5075 Commit: aee103166463a38494d73507e70ee1c55bb9f134 Parents: 4afeba7 Author: sboikov <[email protected]> Authored: Thu May 11 17:42:22 2017 +0300 Committer: sboikov <[email protected]> Committed: Thu May 11 17:42:22 2017 +0300 ---------------------------------------------------------------------- .../processors/cache/CacheAffinitySharedManager.java | 2 +- .../internal/processors/cache/CacheGroupInfrastructure.java | 9 +++++++++ .../internal/processors/cache/GridCacheProcessor.java | 1 + .../cache/distributed/dht/GridDhtPartitionTopologyImpl.java | 5 +++-- 4 files changed, 14 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/aee10316/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java index dc31ae9..f85d110 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java @@ -952,7 +952,7 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap if (grp.isLocal()) continue; - if (canCalculateAffinity(grp.affinity(), fut)) { + if (fut.cacheGroupStarting(grp.groupId()) || cctx.localNodeId().equals(grp.receivedFrom())) { List<List<ClusterNode>> assignment = grp.affinity().calculate(fut.topologyVersion(), fut.discoveryEvent(), fut.discoCache()); http://git-wip-us.apache.org/repos/asf/ignite/blob/aee10316/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupInfrastructure.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupInfrastructure.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupInfrastructure.java index 2a4e918..04b45a0 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupInfrastructure.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupInfrastructure.java @@ -105,6 +105,9 @@ public class CacheGroupInfrastructure { /** */ private boolean storeCacheId; + /** */ + private UUID rcvdFrom; + /** * @param grpId Group ID. * @param ctx Context. @@ -112,6 +115,7 @@ public class CacheGroupInfrastructure { */ CacheGroupInfrastructure(GridCacheSharedContext ctx, int grpId, + UUID rcvdFrom, CacheType cacheType, CacheConfiguration ccfg, boolean affNode, @@ -124,6 +128,7 @@ public class CacheGroupInfrastructure { assert ccfg != null; this.grpId = grpId; + this.rcvdFrom = rcvdFrom; this.cacheType = cacheType; this.ctx = ctx; this.ccfg = ccfg; @@ -143,6 +148,10 @@ public class CacheGroupInfrastructure { log = ctx.kernalContext().log(getClass()); } + public UUID receivedFrom() { + return rcvdFrom; + } + public boolean storeCacheId() { return storeCacheId; } http://git-wip-us.apache.org/repos/asf/ignite/blob/aee10316/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 63b29b8..be3b4fd 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 @@ -1915,6 +1915,7 @@ public class GridCacheProcessor extends GridProcessorAdapter { CacheGroupInfrastructure grp = new CacheGroupInfrastructure(sharedCtx, desc.groupId(), + desc.receivedFrom(), cacheType, cfg, affNode, http://git-wip-us.apache.org/repos/asf/ignite/blob/aee10316/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java index c75f05c..9168d7f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java @@ -401,9 +401,10 @@ public class GridDhtPartitionTopologyImpl implements GridDhtPartitionTopology { int num = grp.affinity().partitions(); if (grp.rebalanceEnabled()) { - boolean added = exchId.topologyVersion().equals(grp.localStartVersion()); + boolean added = exchFut.cacheGroupStarting(grp.groupId()) || + (exchId.isJoined() && exchId.nodeId().equals(grp.receivedFrom())); - boolean first = (loc.equals(oldest) && loc.id().equals(exchId.nodeId()) && exchId.isJoined()) || added; + boolean first = added || (loc.equals(oldest) && loc.id().equals(exchId.nodeId()) && exchId.isJoined()); if (first) { assert exchId.isJoined() || added;
