You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by il...@apache.org on 2021/02/19 12:18:26 UTC
[ignite] branch master updated: IGNITE-12508 Improve
GridCacheProcessor#cacheDescriptor's time complexity - Fixes #8802.
This is an automated email from the ASF dual-hosted git repository.
ilyak pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new cd5e6e0 IGNITE-12508 Improve GridCacheProcessor#cacheDescriptor's time complexity - Fixes #8802.
cd5e6e0 is described below
commit cd5e6e0f3c5d42884f172155e7d00ea8d33dac58
Author: Atri Sharma <at...@gmail.com>
AuthorDate: Fri Feb 19 15:16:53 2021 +0300
IGNITE-12508 Improve GridCacheProcessor#cacheDescriptor's time complexity - Fixes #8802.
Signed-off-by: Ilya Kasnacheev <il...@gmail.com>
---
.../internal/processors/cache/ClusterCachesInfo.java | 19 ++++++++++++++++++-
.../internal/processors/cache/GridCacheProcessor.java | 11 +----------
2 files changed, 19 insertions(+), 11 deletions(-)
diff --git 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
index 0a6bc21..7cb72ef 100644
--- 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
@@ -127,6 +127,9 @@ public class ClusterCachesInfo {
/** Dynamic caches. */
private final ConcurrentMap<String, DynamicCacheDescriptor> registeredCaches = new ConcurrentHashMap<>();
+ /** Mapping of caches by cache ID */
+ private final ConcurrentMap<Integer, DynamicCacheDescriptor> registeredCachesById = new ConcurrentHashMap<>();
+
/** */
private final ConcurrentMap<Integer, CacheGroupDescriptor> registeredCacheGrps = new ConcurrentHashMap<>();
@@ -813,7 +816,8 @@ public class ClusterCachesInfo {
markedForDeletionCaches.put(cacheName, old);
- registeredCaches.remove(cacheName);
+ DynamicCacheDescriptor removedCacheDescriptor = registeredCaches.remove(cacheName);
+ registeredCachesById.remove(removedCacheDescriptor.cacheId());
if (req.restart()) {
IgniteUuid restartId = req.restartId();
@@ -1040,6 +1044,8 @@ public class ClusterCachesInfo {
DynamicCacheDescriptor old = registeredCaches.put(ccfg.getName(), startDesc);
+ registeredCachesById.put(startDesc.cacheId(), startDesc);
+
restartingCaches.remove(ccfg.getName());
assert old == null;
@@ -1473,6 +1479,7 @@ public class ClusterCachesInfo {
desc.receivedOnDiscovery(true);
registeredCaches.put(cacheData.cacheConfiguration().getName(), desc);
+ registeredCachesById.put(desc.cacheId(), desc);
ctx.discovery().setCacheFilter(
desc.cacheId(),
@@ -1585,6 +1592,7 @@ public class ClusterCachesInfo {
*/
private void cleanCachesAndGroups() {
registeredCaches.clear();
+ registeredCachesById.clear();
registeredCacheGrps.clear();
ctx.discovery().cleanCachesAndGroups();
}
@@ -2113,6 +2121,7 @@ public class ClusterCachesInfo {
);
DynamicCacheDescriptor old = registeredCaches.put(cfg.getName(), desc);
+ registeredCachesById.put(desc.cacheId(), desc);
assert old == null : old;
}
@@ -2414,6 +2423,13 @@ public class ClusterCachesInfo {
}
/**
+ * @return Registered caches by Id
+ */
+ ConcurrentMap<Integer, DynamicCacheDescriptor> registeredCachesById() {
+ return registeredCachesById;
+ }
+
+ /**
* @return Registered cache templates.
*/
ConcurrentMap<String, DynamicCacheDescriptor> registeredTemplates() {
@@ -2452,6 +2468,7 @@ public class ClusterCachesInfo {
registeredCacheGrps.clear();
registeredCaches.clear();
+ registeredCachesById.clear();
registeredTemplates.clear();
clientReconnectReqs = null;
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 0fbeba6..d82ef97 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
@@ -4616,16 +4616,7 @@ public class GridCacheProcessor extends GridProcessorAdapter {
* @return Cache descriptor.
*/
public @Nullable DynamicCacheDescriptor cacheDescriptor(int cacheId) {
- for (DynamicCacheDescriptor cacheDesc : cacheDescriptors().values()) {
- CacheConfiguration ccfg = cacheDesc.cacheConfiguration();
-
- assert ccfg != null : cacheDesc;
-
- if (CU.cacheId(ccfg.getName()) == cacheId)
- return cacheDesc;
- }
-
- return null;
+ return cachesInfo.registeredCachesById().get(cacheId);
}
/**