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/b5c86708 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/b5c86708 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/b5c86708 Branch: refs/heads/ignite-5075 Commit: b5c86708c52d2efc85ee87ff67bde452a98ce2c6 Parents: b7424dc d24b08b Author: sboikov <[email protected]> Authored: Thu May 11 17:02:41 2017 +0300 Committer: sboikov <[email protected]> Committed: Thu May 11 17:02:41 2017 +0300 ---------------------------------------------------------------------- .../cache/CacheAffinitySharedManager.java | 31 +++++++----- .../internal/processors/cache/CacheData.java | 14 ------ .../processors/cache/ClusterCachesInfo.java | 47 +++++++----------- .../cache/DynamicCacheDescriptor.java | 31 +++--------- .../processors/cache/GridCacheContext.java | 15 ------ .../processors/cache/GridCacheIoManager.java | 6 ++- .../GridCachePartitionExchangeManager.java | 4 +- .../processors/cache/GridCacheProcessor.java | 9 ---- .../dht/GridDhtAffinityAssignmentRequest.java | 32 ++++++------- .../dht/GridDhtAffinityAssignmentResponse.java | 36 ++++++++++++-- .../dht/GridDhtAssignmentFetchFuture.java | 50 +++++++++++--------- .../dht/GridDhtPartitionTopologyImpl.java | 4 +- .../continuous/CacheContinuousQueryManager.java | 1 - .../loadtests/hashmap/GridCacheTestContext.java | 1 - 14 files changed, 127 insertions(+), 154 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/b5c86708/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java index bd80bf0,bd41ccc..0443ba4 --- 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 @@@ -991,9 -1006,9 +998,9 @@@ public class CacheAffinitySharedManager for (int i = 0; i < fetchFuts.size(); i++) { GridDhtAssignmentFetchFuture fetchFut = fetchFuts.get(i); - Integer grpId = fetchFut.key().get1(); - Integer cacheId = fetchFut.cacheId(); ++ Integer grpId = fetchFut.cacheId(); - fetchAffinity(fut, cctx.cacheContext(cacheId).affinity().affinityCache(), fetchFut); + fetchAffinity(fut, cctx.cache().cacheGroup(grpId).affinity(), fetchFut); } } http://git-wip-us.apache.org/repos/asf/ignite/blob/b5c86708/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheData.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheData.java index fcad88a,0c97ab0..0927e25 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheData.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheData.java @@@ -79,9 -72,7 +75,8 @@@ public class CacheData implements Seria */ CacheData(CacheConfiguration cacheCfg, int cacheId, + int grpId, CacheType cacheType, - AffinityTopologyVersion startTopVer, IgniteUuid deploymentId, QuerySchema schema, UUID rcvdFrom, @@@ -90,16 -81,12 +85,14 @@@ byte flags) { assert cacheCfg != null; assert rcvdFrom != null : cacheCfg.getName(); - assert startTopVer != null : cacheCfg.getName(); assert deploymentId != null : cacheCfg.getName(); assert template || cacheId != 0 : cacheCfg.getName(); + assert template || grpId != 0 : cacheCfg.getName(); this.cacheCfg = cacheCfg; this.cacheId = cacheId; + this.grpId = grpId; this.cacheType = cacheType; - this.startTopVer = startTopVer; this.deploymentId = deploymentId; this.schema = schema; this.rcvdFrom = rcvdFrom; http://git-wip-us.apache.org/repos/asf/ignite/blob/b5c86708/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java index 9789fdf,efcf6a8..7800a45 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java @@@ -637,9 -604,7 +633,8 @@@ class ClusterCachesInfo for (DynamicCacheDescriptor desc : registeredCaches.values()) { CacheData cacheData = new CacheData(desc.cacheConfiguration(), desc.cacheId(), + desc.groupDescriptor().groupId(), desc.cacheType(), - desc.startTopologyVersion(), desc.deploymentId(), desc.schema(), desc.receivedFrom(), @@@ -668,9 -620,7 +663,8 @@@ for (DynamicCacheDescriptor desc : registeredTemplates.values()) { CacheData cacheData = new CacheData(desc.cacheConfiguration(), 0, + 0, desc.cacheType(), - desc.startTopologyVersion(), desc.deploymentId(), desc.schema(), desc.receivedFrom(), http://git-wip-us.apache.org/repos/asf/ignite/blob/b5c86708/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheDescriptor.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/b5c86708/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java index 94f86aa,2466a59..d5128f5 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java @@@ -280,9 -288,7 +277,8 @@@ public class GridCacheContext<K, V> imp GridKernalContext ctx, GridCacheSharedContext sharedCtx, CacheConfiguration cacheCfg, + CacheGroupInfrastructure grp, CacheType cacheType, - AffinityTopologyVersion cacheStartTopVer, AffinityTopologyVersion locStartTopVer, boolean affNode, boolean updatesAllowed, @@@ -308,10 -317,8 +304,9 @@@ assert ctx != null; assert sharedCtx != null; assert cacheCfg != null; - assert cacheStartTopVer != null : cacheCfg.getName(); assert locStartTopVer != null : cacheCfg.getName(); + assert grp != null; assert evtMgr != null; assert storeMgr != null; assert evictMgr != null; @@@ -327,10 -334,8 +322,9 @@@ this.ctx = ctx; this.sharedCtx = sharedCtx; this.cacheCfg = cacheCfg; + this.grp = grp; this.cacheType = cacheType; this.locStartTopVer = locStartTopVer; - this.cacheStartTopVer = cacheStartTopVer; this.affNode = affNode; this.updatesAllowed = updatesAllowed; this.depEnabled = ctx.deploy().enabled() && !cacheObjects().isBinaryEnabled(cacheCfg); http://git-wip-us.apache.org/repos/asf/ignite/blob/b5c86708/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/b5c86708/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java index e426426,04c647f..98ad758 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java @@@ -897,35 -889,37 +897,35 @@@ public class GridCachePartitionExchange final Map<Object, T2<Integer, GridDhtPartitionFullMap>> dupData = new HashMap<>(); - cctx.forAllCaches(new IgniteInClosure<GridCacheContext>() { - @Override public void apply(GridCacheContext cacheCtx) { - if (!cacheCtx.isLocal()) { - boolean ready; + for (CacheGroupInfrastructure grp : cctx.cache().cacheGroups()) { + if (!grp.isLocal()) { + boolean ready; - if (exchId != null) { - AffinityTopologyVersion startTopVer = cacheCtx.startTopologyVersion(); + if (exchId != null) { - AffinityTopologyVersion startTopVer = grp.groupStartVersion(); ++ AffinityTopologyVersion startTopVer = grp.localStartVersion(); - ready = startTopVer.compareTo(exchId.topologyVersion()) <= 0; - } - else - ready = cacheCtx.started(); + ready = startTopVer.compareTo(exchId.topologyVersion()) <= 0; + } + else + ready = grp.started(); - if (ready) { - GridAffinityAssignmentCache affCache = cacheCtx.affinity().affinityCache(); + if (ready) { + GridAffinityAssignmentCache affCache = grp.affinity(); - GridDhtPartitionFullMap locMap = cacheCtx.topology().partitionMap(true); + GridDhtPartitionFullMap locMap = grp.topology().partitionMap(true); - addFullPartitionsMap(m, - dupData, - compress, - cacheCtx.cacheId(), - locMap, - affCache.similarAffinityKey()); + addFullPartitionsMap(m, + dupData, + compress, + grp.groupId(), + locMap, + affCache.similarAffinityKey()); - if (exchId != null) - m.addPartitionUpdateCounters(cacheCtx.cacheId(), cacheCtx.topology().updateCounters(true)); - } + if (exchId != null) + m.addPartitionUpdateCounters(grp.groupId(), grp.topology().updateCounters(true)); } } - }); + } // It is important that client topologies be added after contexts. for (GridClientPartitionTopology top : cctx.exchange().clientTopologies()) { @@@ -1299,12 -1296,12 +1299,12 @@@ boolean updated = false; for (Map.Entry<Integer, GridDhtPartitionMap> entry : msg.partitions().entrySet()) { - Integer cacheId = entry.getKey(); + Integer grpId = entry.getKey(); - GridCacheContext<K, V> cacheCtx = cctx.cacheContext(cacheId); + CacheGroupInfrastructure grp = cctx.cache().cacheGroup(grpId); - if (cacheCtx != null && - cacheCtx.startTopologyVersion().compareTo(entry.getValue().topologyVersion()) > 0) + if (grp != null && - grp.groupStartVersion().compareTo(entry.getValue().topologyVersion()) > 0) ++ grp.localStartVersion().compareTo(entry.getValue().topologyVersion()) > 0) continue; GridDhtPartitionTopology top = null; http://git-wip-us.apache.org/repos/asf/ignite/blob/b5c86708/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java index 86ead93,f9b015d..a72f21c --- 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 @@@ -1363,10 -1343,8 +1363,9 @@@ public class GridCacheProcessor extend * @throws IgniteCheckedException If failed to create cache. */ private GridCacheContext createCache(CacheConfiguration<?, ?> cfg, + CacheGroupInfrastructure grp, @Nullable CachePluginManager pluginMgr, CacheType cacheType, - AffinityTopologyVersion cacheStartTopVer, AffinityTopologyVersion locStartTopVer, CacheObjectContext cacheObjCtx, boolean affNode, @@@ -1435,9 -1418,7 +1434,8 @@@ ctx, sharedCtx, cfg, + grp, cacheType, - cacheStartTopVer, locStartTopVer, affNode, updatesAllowed, @@@ -1566,9 -1550,7 +1564,8 @@@ ctx, sharedCtx, cfg, + grp, cacheType, - cacheStartTopVer, locStartTopVer, affNode, true, @@@ -1852,40 -1828,9 +1844,39 @@@ ccfg.setNearConfiguration(reqNearCfg); } + String grpName = startCfg.getGroupName(); + + CacheGroupInfrastructure grp = null; + + if (grpName != null) { + for (CacheGroupInfrastructure grp0 : cacheGrps.values()) { + if (grp0.sharedGroup() && grpName.equals(grp0.name())) { + grp = grp0; + + break; + } + } + + if (grp == null) { + grp = startCacheGroup(grpDesc, + cacheType, + affNode, + cacheObjCtx, + exchTopVer); + } + } + else { + grp = startCacheGroup(grpDesc, + cacheType, + affNode, + cacheObjCtx, + exchTopVer); + } + GridCacheContext cacheCtx = createCache(ccfg, + grp, null, cacheType, - cacheStartTopVer, exchTopVer, cacheObjCtx, affNode, http://git-wip-us.apache.org/repos/asf/ignite/blob/b5c86708/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java index 14eb92f,f80adc5..d9d642a --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java @@@ -45,19 -45,19 +45,19 @@@ public class GridDhtAffinityAssignmentR } /** + * @param futId Future ID. - * @param cacheId Cache ID. + * @param grpId Cache group ID. * @param topVer Topology version. - * @param waitTopVer Topology version to wait for before message processing. */ - public GridDhtAffinityAssignmentRequest(int grpId, - AffinityTopologyVersion topVer, - AffinityTopologyVersion waitTopVer) { + public GridDhtAffinityAssignmentRequest( + long futId, - int cacheId, ++ int grpId, + AffinityTopologyVersion topVer) { assert topVer != null; - assert waitTopVer != null; + this.futId = futId; - this.cacheId = cacheId; + this.grpId = grpId; this.topVer = topVer; - this.waitTopVer = waitTopVer; } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/b5c86708/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentResponse.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentResponse.java index 6c01c8d,5d82171..4df3fc1 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentResponse.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentResponse.java @@@ -67,14 -72,18 +70,18 @@@ public class GridDhtAffinityAssignmentR } /** + * @param futId Future ID. - * @param cacheId Cache ID. + * @param grpId Cache group ID. * @param topVer Topology version. * @param affAssignment Affinity assignment. */ - public GridDhtAffinityAssignmentResponse(int grpId, + public GridDhtAffinityAssignmentResponse( + long futId, - int cacheId, ++ int grpId, @NotNull AffinityTopologyVersion topVer, List<List<ClusterNode>> affAssignment) { + this.futId = futId; - this.cacheId = cacheId; + this.grpId = grpId; this.topVer = topVer; affAssignmentIds = ids(affAssignment); http://git-wip-us.apache.org/repos/asf/ignite/blob/b5c86708/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAssignmentFetchFuture.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAssignmentFetchFuture.java index c8966ed,741ca5e..c008ef3 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAssignmentFetchFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAssignmentFetchFuture.java @@@ -66,11 -68,13 +69,13 @@@ public class GridDhtAssignmentFetchFutu private ClusterNode pendingNode; /** */ - @GridToStringInclude - private final T2<Integer, AffinityTopologyVersion> key; + private final long id; /** */ - private final CacheGroupDescriptor grpDesc; + private final AffinityTopologyVersion topVer; + + /** */ - private final int cacheId; ++ private final int grpId; /** * @param ctx Context. @@@ -84,11 -88,13 +89,13 @@@ AffinityTopologyVersion topVer, DiscoCache discoCache ) { + this.topVer = topVer; - this.cacheId = cacheDesc.cacheId(); ++ this.grpId = grpDesc.groupId(); this.ctx = ctx; - this.grpDesc = grpDesc; - this.key = new T2<>(grpDesc.groupId(), topVer); + + id = idGen.getAndIncrement(); - Collection<ClusterNode> availableNodes = discoCache.cacheAffinityNodes(cacheDesc.cacheId()); + Collection<ClusterNode> availableNodes = discoCache.cacheGroupAffinityNodes(grpDesc.groupId()); LinkedList<ClusterNode> tmp = new LinkedList<>(); @@@ -190,7 -195,7 +196,7 @@@ ", node=" + node + ']'); ctx.io().send(node, - new GridDhtAffinityAssignmentRequest(key.get1(), key.get2(), grpDesc.startTopologyVersion()), - new GridDhtAffinityAssignmentRequest(id, cacheId, topVer), ++ new GridDhtAffinityAssignmentRequest(id, grpId, topVer), AFFINITY_POOL); // Close window for listener notification. http://git-wip-us.apache.org/repos/asf/ignite/blob/b5c86708/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java index b76f548,58ad600..8ea9e46 --- 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 @@@ -396,12 -388,12 +396,12 @@@ public class GridDhtPartitionTopologyIm ", futVer=" + exchFut.topologyVersion() + ", fut=" + exchFut + ']'; - List<List<ClusterNode>> aff = cctx.affinity().assignments(exchFut.topologyVersion()); + List<List<ClusterNode>> aff = grp.affinity().assignments(exchFut.topologyVersion()); - int num = cctx.affinity().partitions(); + int num = grp.affinity().partitions(); - if (cctx.rebalanceEnabled()) { - boolean added = exchId.topologyVersion().equals(cctx.startTopologyVersion()); + if (grp.rebalanceEnabled()) { - boolean added = exchId.topologyVersion().equals(grp.groupStartVersion()); ++ boolean added = exchId.topologyVersion().equals(grp.localStartVersion()); boolean first = (loc.equals(oldest) && loc.id().equals(exchId.nodeId()) && exchId.isJoined()) || added; @@@ -1173,7 -1157,7 +1173,7 @@@ // then we keep the newer value. if (newPart != null && (newPart.updateSequence() < part.updateSequence() || - (grp.groupStartVersion().compareTo(newPart.topologyVersion()) > 0)) - (cctx.startTopologyVersion().compareTo(newPart.topologyVersion()) > 0)) ++ (grp.localStartVersion().compareTo(newPart.topologyVersion()) > 0)) ) { if (log.isDebugEnabled()) log.debug("Overriding partition map in full update map [exchId=" + exchId + ", curPart=" + http://git-wip-us.apache.org/repos/asf/ignite/blob/b5c86708/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/b5c86708/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java ---------------------------------------------------------------------- diff --cc modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java index 5a7dbc1,4f0d9a1..9126fd2 --- a/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java +++ b/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java @@@ -78,12 -78,13 +78,11 @@@ public class GridCacheTestContext<K, V null ), defaultCacheConfiguration(), + null, CacheType.USER, AffinityTopologyVersion.ZERO, - AffinityTopologyVersion.ZERO, true, true, - null, - null, - null, new GridCacheEventManager(), new CacheOsStoreManager(null, new CacheConfiguration()), new GridCacheEvictionManager(),
