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);
     }
 
     /**