You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Reinhard Prechtl (JIRA)" <ji...@apache.org> on 2012/10/23 18:01:13 UTC

[jira] [Updated] (CAMEL-5623) Cache-Component doesn't work with decorated Caches

     [ https://issues.apache.org/jira/browse/CAMEL-5623?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Reinhard Prechtl updated CAMEL-5623:
------------------------------------

          Description: 
The camel-cache component uses cacheManager.getCache(cacheName) in org.apache.camel.component.cache.CacheEndpoint.initializeCache():114
This method call does not return decorated caches.

If you want to use a SelfPopulatingCache or a BlockingCache with EhCache and you call cacheManager.replaceCacheWithDecoratedCache(oldCache, decoratedCache), then the CachedEndpoint will return a <null> cache instead of the decorated cache. This happens because the preceeding cacheManager.cacheExists(cacheName) check will not check if a cache is a decorated cache.

My suggestion is to replace the getCache() call with getEhcache() call, which will return decorated caches as well.

Update: With the above issue resolved, there's a follow-up error in the CacheProducer class. In line 98 it checks if there is content for the given key in the cache. This prevents the use of SelfPopulatingCaches as well, since it is expected that there is no element in the Cache at some point - a CacheEntryFactory will then populate the Cache.

  was:
The camel-cache component uses cacheManager.getCache(cacheName) in org.apache.camel.component.cache.CacheEndpoint.initializeCache():114
This method call does not return decorated caches.

If you want to use a SelfPopulatingCache or a BlockingCache with EhCache and you call cacheManager.replaceCacheWithDecoratedCache(oldCache, decoratedCache), then the CachedEndpoint will return a <null> cache instead of the decorated cache. This happens because the preceeding cacheManager.cacheExists(cacheName) check will not check if a cache is a decorated cache.

My suggestion is to replace the getCache() call with getEhcache() call, which will return decorated caches as well.

           Patch Info: Patch Available
    Affects Version/s: 2.10.2
        Fix Version/s:     (was: 2.10.2)
    
> Cache-Component doesn't work with decorated Caches
> --------------------------------------------------
>
>                 Key: CAMEL-5623
>                 URL: https://issues.apache.org/jira/browse/CAMEL-5623
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-cache
>    Affects Versions: 2.10.1, 2.10.2
>            Reporter: Reinhard Prechtl
>            Assignee: Claus Ibsen
>            Priority: Minor
>             Fix For: 2.11.0
>
>         Attachments: camel-cache-5623.patch
>
>
> The camel-cache component uses cacheManager.getCache(cacheName) in org.apache.camel.component.cache.CacheEndpoint.initializeCache():114
> This method call does not return decorated caches.
> If you want to use a SelfPopulatingCache or a BlockingCache with EhCache and you call cacheManager.replaceCacheWithDecoratedCache(oldCache, decoratedCache), then the CachedEndpoint will return a <null> cache instead of the decorated cache. This happens because the preceeding cacheManager.cacheExists(cacheName) check will not check if a cache is a decorated cache.
> My suggestion is to replace the getCache() call with getEhcache() call, which will return decorated caches as well.
> Update: With the above issue resolved, there's a follow-up error in the CacheProducer class. In line 98 it checks if there is content for the given key in the cache. This prevents the use of SelfPopulatingCaches as well, since it is expected that there is no element in the Cache at some point - a CacheEntryFactory will then populate the Cache.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira