Hi,

I am running an app with a custom dataregion for one of the cache's with
following configuration,
max size = 20mb (just for example)
persistence=false 
expiry policy = Random_2_LRU

I am using a 3rd party persistence (RDBMS).

When i use this configuration and add data all works fine. E.g. say i put
50k records, all 50k make it to the DB, while only 30k stay in the cache
(based on the above expiration policy). All's good so far.

However, when i start the app all over again, i preload the cache with data
from the DB. The DB has 50k records, so i expect the cache to continue to
apply the expiration policy as it nears its 90% data region capacity.

However, as i am pre loading, i am monitoring the mbeans for data region and
the overall entry count. I see the data region allocation go above 20mb and
the entry count go above 40k. And then it just crashes with OOM with the
below error,

[2020-07-23T18:41:43,286][ERROR][Test.Thread.4][ignite] Critical system
error detected. Will be handled accordingly to configured handler
[hnd=StopNodeOrHaltFailureHandler [tryStop=false, timeout=0,
super=AbstractFailureHandler [ignoredFailureTypes=UnmodifiableSet
[SYSTEM_WORKER_BLOCKED, SYSTEM_CRITICAL_OPERATION_TIMEOUT]]],
failureCtx=FailureContext [type=CRITICAL_ERROR, err=class
o.a.i.i.mem.IgniteOutOfMemoryException: Out of memory in data region
[name=Account, initSize=19.0 MiB, maxSize=20.0 MiB,
persistenceEnabled=false] Try the following:
  ^-- Increase maximum off-heap memory size
(DataRegionConfiguration.maxSize)
  ^-- Enable Ignite persistence (DataRegionConfiguration.persistenceEnabled)
  ^-- Enable eviction or expiration policies]]
org.apache.ignite.internal.mem.IgniteOutOfMemoryException: Out of memory in
data region [name=be.gen.Concepts.Account, initSize=19.0 MiB, maxSize=20.0
MiB, persistenceEnabled=false] Try the following:
  ^-- Increase maximum off-heap memory size
(DataRegionConfiguration.maxSize)
  ^-- Enable Ignite persistence (DataRegionConfiguration.persistenceEnabled)
  ^-- Enable eviction or expiration policies
        at
org.apache.ignite.internal.pagemem.impl.PageMemoryNoStoreImpl.allocatePage(PageMemoryNoStoreImpl.java:322)
[ignite-core-2.8.1.jar:2.8.1]
        at
org.apache.ignite.internal.processors.cache.persistence.freelist.AbstractFreeList.allocateDataPage(AbstractFreeList.java:570)
[ignite-core-2.8.1.jar:2.8.1]
        at
org.apache.ignite.internal.processors.cache.persistence.freelist.AbstractFreeList.writeSinglePage(AbstractFreeList.java:688)
[ignite-core-2.8.1.jar:2.8.1]
        at
org.apache.ignite.internal.processors.cache.persistence.freelist.AbstractFreeList.insertDataRow(AbstractFreeList.java:582)
[ignite-core-2.8.1.jar:2.8.1]
        at
org.apache.ignite.internal.processors.cache.persistence.freelist.CacheFreeList.insertDataRow(CacheFreeList.java:74)
[ignite-core-2.8.1.jar:2.8.1]
        at
org.apache.ignite.internal.processors.cache.persistence.freelist.CacheFreeList.insertDataRow(CacheFreeList.java:35)
[ignite-core-2.8.1.jar:2.8.1]
        at
org.apache.ignite.internal.processors.cache.persistence.RowStore.addRow(RowStore.java:108)
[ignite-core-2.8.1.jar:2.8.1]
...

Not sure why is the expiration policy not kicking in. Is this a bug?

Any inputs appreciated.

Victor



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Reply via email to