[jira] [Created] (IGNITE-12508) GridCacheProcessor#cacheDescriptor(int) has O(N) complexity

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Created] (IGNITE-12508) GridCacheProcessor#cacheDescriptor(int) has O(N) complexity

Anton Vinogradov (Jira)
Ivan Rakov created IGNITE-12508:
-----------------------------------

             Summary: GridCacheProcessor#cacheDescriptor(int) has O(N) complexity
                 Key: IGNITE-12508
                 URL: https://issues.apache.org/jira/browse/IGNITE-12508
             Project: Ignite
          Issue Type: Bug
            Reporter: Ivan Rakov
             Fix For: 2.9


See the method code:
{code}
    @Nullable public 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;
    }
{code}

This method is invoked in several hot paths which causes significant performance regression when the number of caches is large, for example, logical recovery and security check for indexing.

The method should be improved to use a hash map or similar data structure to get a better complexity



--
This message was sent by Atlassian Jira
(v8.3.4#803005)