[jira] [Created] (IGNITE-6649) Add EvitionPolicy factory support in IgniteConfiguration.

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

[jira] [Created] (IGNITE-6649) Add EvitionPolicy factory support in IgniteConfiguration.

Anton Vinogradov (Jira)
Andrew Mashenkov created IGNITE-6649:
----------------------------------------

             Summary: Add EvitionPolicy factory support in IgniteConfiguration.
                 Key: IGNITE-6649
                 URL: https://issues.apache.org/jira/browse/IGNITE-6649
             Project: Ignite
          Issue Type: Bug
      Security Level: Public (Viewable by anyone)
          Components: cache
            Reporter: Andrew Mashenkov
             Fix For: 2.4


For now the only way to set EvictionPolicy to IgniteConfiguration is to use EvictionPolicy instance.
That looks error prone as user can easily share instance between caches or cache reincarnations and got unexpected results.

E.g. it can cause an AssertionError if EvictionPolicy is reused.
Steps to reproduce.

1. Create CacheConfiguration object that will be reused.
2. Create and fill a cache.
3. Destroy cache and create cache again with same CacheConfiguration object.
4. One of next put can fails with stacktrace below.

The error is throws when EvictionPolicy tries to evict entries from cache that has just been destroyed.

java.lang.AssertionError
        at org.apache.ignite.internal.processors.cache.CacheEvictableEntryImpl.evict(CacheEvictableEntryImpl.java:71)
        at org.apache.ignite.cache.eviction.lru.LruEvictionPolicy.shrink0(LruEvictionPolicy.java:275)
        at org.apache.ignite.cache.eviction.lru.LruEvictionPolicy.shrink(LruEvictionPolicy.java:250)
        at org.apache.ignite.cache.eviction.lru.LruEvictionPolicy.onEntryAccessed(LruEvictionPolicy.java:161)
        at org.apache.ignite.internal.processors.cache.GridCacheEvictionManager.notifyPolicy(GridCacheEvictionManager.java:1393)
        at org.apache.ignite.internal.processors.cache.GridCacheEvictionManager.touch(GridCacheEvictionManager.java:825)
        at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.unlockEntries(GridDhtAtomicCache.java:3058)
        at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1952)
        at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1730)
        at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.mapSingle(GridNearAtomicAbstractUpdateFuture.java:264)
        at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.map(GridNearAtomicSingleUpdateFuture.java:494)
        at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.mapOnTopology(GridNearAtomicSingleUpdateFuture.java:436)
        at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.map(GridNearAtomicAbstractUpdateFuture.java:209)
        at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update0(GridDhtAtomicCache.java:1245)
        at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.put0(GridDhtAtomicCache.java:680)
        at org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2328)
        at org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2305)
        at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.put(IgniteCacheProxy.java:1379)




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)