Repository: incubator-ignite Updated Branches: refs/heads/ignite-843 1585080ed -> fea607cd1
# IGNITE-1167 Return caches on topology command. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/2d12c9eb Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/2d12c9eb Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/2d12c9eb Branch: refs/heads/ignite-843 Commit: 2d12c9ebd93777a6d8e2cfe7d7471aad7109a440 Parents: 40e87e2 Author: Andrey <anovi...@gridgain.com> Authored: Fri Jul 31 17:41:31 2015 +0700 Committer: Andrey <anovi...@gridgain.com> Committed: Fri Jul 31 17:41:31 2015 +0700 ---------------------------------------------------------------------- .../discovery/GridDiscoveryManager.java | 19 +++++++++++++ .../top/GridTopologyCommandHandler.java | 28 +++++++++++--------- 2 files changed, 35 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2d12c9eb/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java index a7363af..b6e0b8d 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java @@ -1512,6 +1512,25 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> { } /** + * @param node Node to check. + * @return Cache names accessible on the given node. + */ + public Collection<String> nodeCaches(ClusterNode node) { + Collection<String> cacheNames = new ArrayList<>(registeredCaches.size()); + + for (Map.Entry<String, CachePredicate> entry : registeredCaches.entrySet()) { + String cacheName = entry.getKey(); + + CachePredicate filter = entry.getValue(); + + if (filter != null && filter.cacheNode(node)) + cacheNames.add(cacheName); + } + + return cacheNames; + } + + /** * Checks if cache with given name has at least one node with near cache enabled. * * @param cacheName Cache name. http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2d12c9eb/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java index 983292c..5d8d39a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java @@ -173,24 +173,28 @@ public class GridTopologyCommandHandler extends GridRestCommandHandlerAdapter { nodeBean.setTcpAddresses(nonEmptyList(node.<Collection<String>>attribute(ATTR_REST_TCP_ADDRS))); nodeBean.setTcpHostNames(nonEmptyList(node.<Collection<String>>attribute(ATTR_REST_TCP_HOST_NAMES))); - GridCacheAttributes[] caches = node.attribute(ATTR_CACHE); + Collection<String> cacheNames = ctx.discovery().nodeCaches(node); - if (!F.isEmpty(caches)) { - Map<String, String> cacheMap = new HashMap<>(); + Map<String, String> cacheMap = U.newHashMap(cacheNames.size()); - for (GridCacheAttributes cacheAttr : caches) { - if (ctx.cache().systemCache(cacheAttr.cacheName())) - continue; + GridCacheProcessor cacheProc = ctx.cache(); - if (cacheAttr.cacheName() != null) - cacheMap.put(cacheAttr.cacheName(), cacheAttr.cacheMode().toString()); - else - nodeBean.setDefaultCacheMode(cacheAttr.cacheMode().toString()); - } + for (String cacheName : cacheNames) { + IgniteInternalCache<?, ?> cache = cacheProc.cache(cacheName); - nodeBean.setCaches(cacheMap); + if (cacheProc.systemCache(cache.name())) + continue; + + String mode = cache.configuration().getCacheMode().toString(); + + if (cache.name() != null) + cacheMap.put(cache.name(), mode); + else + nodeBean.setDefaultCacheMode(mode); } + nodeBean.setCaches(cacheMap); + if (mtr) { ClusterMetrics metrics = node.metrics();