ignite-647
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/bf101deb Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/bf101deb Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/bf101deb Branch: refs/heads/ignite-1537 Commit: bf101deb96d4a718d12fcbc857c9f272b4335166 Parents: 023ea3d Author: sboikov <[email protected]> Authored: Fri Dec 25 09:11:33 2015 +0300 Committer: sboikov <[email protected]> Committed: Fri Dec 25 09:11:33 2015 +0300 ---------------------------------------------------------------------- .../internal/processors/cache/GridCacheIoManager.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/bf101deb/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java index 2a555c1..b297827 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java @@ -124,7 +124,15 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter { if (cacheMsg.partitionExchangeMessage()) { if (cacheMsg instanceof GridDhtAffinityAssignmentRequest) { - fut = cctx.exchange().affinityReadyFuture(new AffinityTopologyVersion(cctx.localNode().order())); + assert cacheMsg.topologyVersion() != null : cacheMsg; + + AffinityTopologyVersion startTopVer = new AffinityTopologyVersion(cctx.localNode().order()); + + assert cacheMsg.topologyVersion().compareTo(startTopVer) > 0 : + "Invalid affinity request [startTopVer=" + startTopVer + ", msg=" + cacheMsg + ']'; + + // Need to wait for initial exchange to avoid race between cache start and affinity request. + fut = cctx.exchange().affinityReadyFuture(startTopVer); if (fut != null && !fut.isDone()) { cctx.kernalContext().closure().runLocalSafe(new Runnable() {
