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/GridCacheIoManager.java Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/5972cbd0 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/5972cbd0 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/5972cbd0 Branch: refs/heads/ignite-5075 Commit: 5972cbd0d2d96b529f436a378af3c006f5f0729d Parents: 9b850cc f5a5fa0 Author: sboikov <[email protected]> Authored: Mon May 15 13:23:41 2017 +0300 Committer: sboikov <[email protected]> Committed: Mon May 15 13:23:41 2017 +0300 ---------------------------------------------------------------------- .../cache/CacheAffinitySharedManager.java | 10 +- .../processors/cache/ClusterCachesInfo.java | 22 +- .../cache/DynamicCacheDescriptor.java | 47 +++- .../processors/cache/GridCacheAdapter.java | 71 +---- .../cache/GridCacheConcurrentMap.java | 5 - .../cache/GridCacheConcurrentMapImpl.java | 28 -- .../processors/cache/GridCacheIoManager.java | 13 +- .../processors/cache/GridCacheProxyImpl.java | 60 ---- .../processors/cache/GridNoStorageCacheMap.java | 5 - .../processors/cache/IgniteInternalCache.java | 61 ----- .../dht/GridCachePartitionedConcurrentMap.java | 9 - .../distributed/dht/GridDhtCacheAdapter.java | 162 ----------- .../distributed/near/GridNearCacheAdapter.java | 17 -- .../GridCachePartitionedFullApiSelfTest.java | 18 -- .../cache/eviction/EvictionAbstractTest.java | 13 +- .../hadoop/jobtracker/HadoopJobTracker.java | 20 +- .../cache/hibernate/HibernateCacheProxy.java | 25 -- .../Apache.Ignite.Core.Tests.csproj | 1 + .../Binary/BinarySelfTest.cs | 7 +- .../Binary/EnumsTest.cs | 274 +++++++++++++++++++ .../Compute/ComputeApiTest.cs | 2 +- .../Impl/Binary/BinaryObject.cs | 2 +- .../Impl/Binary/BinaryReflectiveActions.cs | 6 +- .../Impl/Binary/BinarySystemHandlers.cs | 271 +++++++++--------- .../Impl/Binary/BinaryUtils.cs | 30 -- .../Impl/Binary/BinaryWriter.cs | 48 +++- modules/web-console/frontend/app/app.js | 7 +- .../activities-user-dialog.tpl.pug | 33 ++- .../cluster-select/cluster-select.pug | 6 +- .../cluster-select/cluster-select.scss | 30 ++ .../app/components/cluster-select/index.js | 1 + .../components/web-console-footer/component.js | 23 ++ .../app/components/web-console-footer/index.js | 23 ++ .../components/web-console-footer/style.scss | 45 +++ .../components/web-console-footer/template.pug | 19 ++ .../components/web-console-header/component.js | 34 +++ .../app/components/web-console-header/index.js | 23 ++ .../components/web-console-header/style.scss | 127 +++++++++ .../components/web-console-header/template.pug | 25 ++ .../app/modules/branding/branding.provider.js | 2 +- .../modules/branding/header-title.directive.js | 6 +- .../branding/powered-by-apache.directive.js | 3 +- .../frontend/app/modules/states/signin.state.js | 2 + .../frontend/app/primitives/btn/index.scss | 235 ++++++++++++++++ .../frontend/app/primitives/index.js | 2 + .../frontend/app/primitives/modal/index.scss | 179 ++++++++++++ .../frontend/app/primitives/table/index.scss | 91 ++++++ .../frontend/gulpfile.babel.js/paths.js | 1 + .../frontend/public/images/ignite-logo.png | Bin 1982 -> 0 bytes .../frontend/public/images/ignite-logo.svg | 17 ++ .../frontend/public/images/[email protected] | Bin 3325 -> 0 bytes .../stylesheets/_bootstrap-variables.scss | 4 +- .../frontend/public/stylesheets/style.scss | 167 ++--------- .../frontend/public/stylesheets/variables.scss | 6 + modules/web-console/frontend/views/403.tpl.pug | 8 +- modules/web-console/frontend/views/404.tpl.pug | 8 +- modules/web-console/frontend/views/base.pug | 8 +- modules/web-console/frontend/views/base2.pug | 8 +- .../frontend/views/includes/footer.pug | 23 -- .../frontend/views/includes/header-left.pug | 64 +++++ .../frontend/views/includes/header-right.pug | 40 +++ .../frontend/views/includes/header.pug | 57 ---- modules/web-console/frontend/views/index.pug | 2 +- .../web-console/frontend/views/reset.tpl.pug | 12 +- .../web-console/frontend/views/signin.tpl.pug | 14 +- parent/pom.xml | 3 +- 66 files changed, 1619 insertions(+), 966 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/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 c3fc575,e10d385..0dab5ab --- 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 @@@ -383,71 -396,60 +383,72 @@@ public class CacheAffinitySharedManager CU.affinityNode(cctx.localNode(), req.startCacheConfiguration().getNodeFilter()); } - if (startCache) + if (startCache) { cctx.cache().prepareCacheStart(cacheDesc, nearCfg, fut.topologyVersion()); - if (fut.cacheAddedOnExchange(cacheDesc.cacheId(), cacheDesc.receivedFrom())) { - if (fut.discoCache().cacheGroupAffinityNodes(cacheDesc.groupDescriptor().groupId()).isEmpty()) - U.quietAndWarn(log, "No server nodes found for cache client: " + req.cacheName()); + if (fut.cacheAddedOnExchange(cacheDesc.cacheId(), cacheDesc.receivedFrom())) { - if (fut.discoCache().cacheAffinityNodes(req.cacheName()).isEmpty()) ++ if (fut.discoCache().cacheGroupAffinityNodes(cacheDesc.groupDescriptor().groupId()).isEmpty()) + U.quietAndWarn(log, "No server nodes found for cache client: " + req.cacheName()); + } } + } - if (!crd || !lateAffAssign) { - GridCacheContext cacheCtx = cctx.cacheContext(cacheDesc.cacheId()); + for (CacheGroupInfrastructure grp : cctx.cache().cacheGroups()) { + if (grp.affinity().lastVersion().equals(AffinityTopologyVersion.NONE)) + initAffinity(registeredGrps.get(grp.groupId()), grp.affinity(), fut, false); + } - if (cacheCtx != null && !cacheCtx.isLocal()) { - boolean clientCacheStarted = - req.clientStartOnly() && req.initiatingNodeId().equals(cctx.localNodeId()); + if (crd) { + for (ExchangeActions.ActionData action : exchActions.newAndClientCachesStartRequests()) + initStartedGroupOnCoordinator(fut, action.descriptor().groupDescriptor()); + } - if (clientCacheStarted) - initAffinity(cacheDesc, cacheCtx.affinity().affinityCache(), fut, lateAffAssign); - else if (!req.clientStartOnly()) { - GridAffinityAssignmentCache aff = cacheCtx.affinity().affinityCache(); + List<ExchangeActions.ActionData> closeReqs = exchActions.closeRequests(cctx.localNodeId()); - assert aff.lastVersion().equals(AffinityTopologyVersion.NONE) : aff.lastVersion(); + for (ExchangeActions.ActionData req : closeReqs) { + cctx.cache().blockGateway(req.request()); - List<List<ClusterNode>> assignment = aff.calculate(fut.topologyVersion(), - fut.discoveryEvent(), fut.discoCache()); + if (crd) { + CacheGroupInfrastructure grp = cctx.cache().cacheGroup(req.descriptor().groupDescriptor().groupId()); - aff.initialize(fut.topologyVersion(), assignment); - } - } - } - else - initStartedCacheOnCoordinator(fut, cacheDesc.cacheId()); - } + assert grp != null; - for (DynamicCacheChangeRequest req : exchActions.closeRequests(cctx.localNodeId())) { - Integer cacheId = CU.cacheId(req.cacheName()); + if (grp.affinityNode()) + continue; - cctx.cache().blockGateway(req); + boolean grpClosed = false; - if (crd) { - GridCacheContext cacheCtx = cctx.cacheContext(cacheId); + if (grp.sharedGroup()) { + boolean cacheRemaining = false; + + for (GridCacheContext ctx : cctx.cacheContexts()) { + if (ctx.group() == grp && !cacheClosed(ctx.cacheId(), closeReqs)) { + cacheRemaining = true; + + break; + } + } + + if (!cacheRemaining) + grpClosed = true; + } + else + grpClosed = true; - // Client cache was stopped, need create 'client' CacheHolder. - if (cacheCtx != null && !cacheCtx.affinityNode()) { - CacheHolder cache = caches.remove(cacheId); + // All client cache groups were stopped, need create 'client' CacheGroupHolder. + if (grpClosed) { + CacheGroupHolder grpHolder = grpHolders.remove(grp.groupId()); - assert !cache.client() : cache; + if (grpHolder != null) { + assert !grpHolder.client() : grpHolder; - cache = CacheHolder2.create(cctx, - cctx.cache().cacheDescriptor(cacheId), - fut, - cache.affinity()); + grpHolder = CacheGroupHolder2.create(cctx, + registeredGrps.get(grp.groupId()), + fut, + grp.affinity()); - caches.put(cacheId, cache); + grpHolders.put(grp.groupId(), grpHolder); + } } } } http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheDescriptor.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMapImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java index d505825,fdd29e4..af9b99e --- 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 @@@ -141,14 -146,19 +141,25 @@@ public class GridCacheIoManager extend if (cacheMsg instanceof GridDhtAffinityAssignmentRequest) { assert cacheMsg.topologyVersion() != null : cacheMsg; - AffinityTopologyVersion startTopVer = new AffinityTopologyVersion(cctx.localNode().order()); + // TODO IGNITE-5075. + AffinityTopologyVersion waitVer = null;//cctx.affinity().localStartVersion(((GridDhtAffinityAssignmentRequest) cacheMsg).groupId()); - DynamicCacheDescriptor cacheDesc = cctx.cache().cacheDescriptor(cacheMsg.cacheId()); + if (waitVer == null) + waitVer = new AffinityTopologyVersion(cctx.localNode().order()); - if (cacheDesc != null) { - if (cacheDesc.startTopologyVersion() != null) - startTopVer = cacheDesc.startTopologyVersion(); - else if (cacheDesc.receivedFromStartVersion() != null) - startTopVer = cacheDesc.receivedFromStartVersion(); - } ++// AffinityTopologyVersion startTopVer = new AffinityTopologyVersion(cctx.localNode().order()); ++// ++// DynamicCacheDescriptor cacheDesc = cctx.cache().cacheDescriptor(cacheMsg.cacheId()); ++// ++// if (cacheDesc != null) { ++// if (cacheDesc.startTopologyVersion() != null) ++// startTopVer = cacheDesc.startTopologyVersion(); ++// else if (cacheDesc.receivedFromStartVersion() != null) ++// startTopVer = cacheDesc.receivedFromStartVersion(); ++// } + // Need to wait for exchange to avoid race between cache start and affinity request. - fut = cctx.exchange().affinityReadyFuture(waitVer); + fut = cctx.exchange().affinityReadyFuture(startTopVer); if (fut != null && !fut.isDone()) { if (log.isDebugEnabled()) { http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridNoStorageCacheMap.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCachePartitionedConcurrentMap.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/5972cbd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java ----------------------------------------------------------------------
