You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by Ilya Kasnacheev <il...@gmail.com> on 2020/04/01 09:59:11 UTC

Re: DataRegionConfiguration update

Hello!

It should not be possible to change configuration of node when data is
already present.

Moreover, page eviction settings are supposed to be ignored when
persistence is enabled:
https://apacheignite.readme.io/docs/evictions
Page replacement is prepared instead.

I recommend filing an issue about this problem in Apache Ignite JIRA
because it is obviously unexpected, but I think that your expectations are
also off.

Regards,
-- 
Ilya Kasnacheev


пт, 27 мар. 2020 г. в 17:06, Andrey Davydov <an...@gmail.com>:

>
>
> Hello,
>
>
>
> We have Ignite data directory from system with following data region
> configuration:
>
>
>
>                         <bean
> class="org.apache.ignite.configuration.DataRegionConfiguration">
>
>                             <property name="name"
> value="myPersistDataRegion"/>
>
>                             <property name="persistenceEnabled"
> value="true"/>
>
>
>
>                             <property name="initialSize"
> value="${config.node.memory.initial}"/>
>
>                             <property name="maxSize"
> value="${config.node.memory.max}"/>
>
>
>
>                             <property name="pageEvictionMode"
> value="DISABLED"/>
>
>                             <property name="metricsEnabled" value="true"/>
>
>                         </bean>
>
>
>
> When we update configuration to:
>
>
>
>                         <bean
> class="org.apache.ignite.configuration.DataRegionConfiguration">
>
>                             <property name="name"
> value="myPersistDataRegion"/>
>
>                             <property name="persistenceEnabled"
> value="true"/>
>
>
>
>                             <property name="initialSize"
> value="${config.node.memory.initial}"/>
>
>                             <property name="maxSize"
> value="${config.node.memory.max}"/>
>
>                             <property name="evictionThreshold"
> value="${config.node.memory.evict.threshold}"/>
>
>
>
>                             <property name="pageEvictionMode"
> value="RANDOM_2_LRU"/>
>
>                             <property name="metricsEnabled" value="true"/>
>
>                         </bean>
>
>
>
> And restart (exactly same system. Difference only in data region config)
> we got following exception. When we change configuration back, everything
> works OK and all data present.
>
> If there is any way to access data from old files with new settings?
>
>
>
> org.apache.ignite.IgniteException: Runtime failure on bounds:
> [lower=SearchRow [key=null, hash=0, cacheId=2077719173], upper=SearchRow
> [key=null, hash=0, cacheId=2077719173]]
>
>         at
> org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:48)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$ScanQueryIterator.advance(GridCacheQueryManager.java:2996)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$ScanQueryIterator.onHasNext(GridCacheQueryManager.java:2965)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.util.GridCloseableIteratorAdapter.hasNextX(GridCloseableIteratorAdapter.java:53)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:45)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> ru.exampl.data.appl.service.business.ModelService.findRunningModels(ModelService.java:945)
> ~[appl.jar:?]
>
>         at
> ru.exampl.data.appl.service.business.LocalEnvironmentService.initializeEnvironment(LocalEnvironmentService.java:192)
> ~[appl.jar:?]
>
>         at
> ru.exampl.data.appl.service.business.LocalEnvironmentService.afterIgniteSet(LocalEnvironmentService.java:125)
> ~[appl.jar:?]
>
>         at
> ru.exampl.data.appl.service.AppServiceNew.lambda$execInner$2(AppServiceNew.java:228)
> ~[appl.jar:?]
>
>         at java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
> ~[?:1.8.0_242]
>
>         at
> ru.exampl.data.appl.service.AppServiceNew.execInner(AppServiceNew.java:228)
> ~[appl.jar:?]
>
>         at
> ru.exampl.data.appl.service.AppServiceNew.execInLock(AppServiceNew.java:181)
> ~[appl.jar:?]
>
>         at
> ru.exampl.data.appl.service.AppServiceNew.execute(AppServiceNew.java:139)
> [appl.jar:?]
>
>         at
> org.apache.ignite.internal.processors.service.GridServiceProcessor$3.run(GridServiceProcessor.java:1394)
> [ignite-core-2.7.6.jar:2.7.6]
>
>         at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> [?:1.8.0_242]
>
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> [?:1.8.0_242]
>
>         at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242]
>
> Caused by:
> org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException:
> Runtime failure on bounds: [lower=SearchRow [key=null, hash=0,
> cacheId=2077719173], upper=SearchRow [key=null, hash=0, cacheId=2077719173]]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.find(BPlusTree.java:1016)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.find(BPlusTree.java:988)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2923)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2894)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2888)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2876)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>        at
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.cursor(GridCacheOffheapManager.java:2075)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$6.onHasNext(IgniteCacheOffheapManagerImpl.java:968)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.util.GridCloseableIteratorAdapter.hasNextX(GridCloseableIteratorAdapter.java:53)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:45)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         ... 16 more
>
> Caused by: java.lang.IllegalArgumentException: Invalid object type: 0
>
>         at
> org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessorImpl.toKeyCacheObject(IgniteCacheObjectProcessorImpl.java:166)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.toKeyCacheObject(CacheObjectBinaryProcessorImpl.java:865)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter.readFullRow(CacheDataRowAdapter.java:333)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter.initFromLink(CacheDataRowAdapter.java:167)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter.initFromLink(CacheDataRowAdapter.java:108)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.tree.DataRow.<init>(DataRow.java:55)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.tree.CacheDataRowStore.dataRow(CacheDataRowStore.java:92)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.tree.CacheDataTree.getRow(CacheDataTree.java:200)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.tree.CacheDataTree.getRow(CacheDataTree.java:49)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$ForwardCursor.fillFromBuffer0(BPlusTree.java:5515)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.fillFromBuffer(BPlusTree.java:5283)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.init(BPlusTree.java:5208)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$GetCursor.notFound(BPlusTree.java:2902)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Search.run0(BPlusTree.java:309)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$GetPageHandler.run(BPlusTree.java:5618)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Search.run(BPlusTree.java:274)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$GetPageHandler.run(BPlusTree.java:5603)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.util.PageHandler.readPage(PageHandler.java:159)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.DataStructure.read(DataStructure.java:334)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.findDown(BPlusTree.java:1312)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.doFind(BPlusTree.java:1279)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.access$8700(BPlusTree.java:90)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.find(BPlusTree.java:5292)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.find(BPlusTree.java:1008)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.find(BPlusTree.java:988)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2923)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2894)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2888)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2876)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.cursor(GridCacheOffheapManager.java:2075)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$6.onHasNext(IgniteCacheOffheapManagerImpl.java:968)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.util.GridCloseableIteratorAdapter.hasNextX(GridCloseableIteratorAdapter.java:53)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         at
> org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:45)
> ~[ignite-core-2.7.6.jar:2.7.6]
>
>         ... 16 more
>
>
>
>
>
> Andrey.
>
>
>

Re: DataRegionConfiguration update

Posted by Ilya Kasnacheev <il...@gmail.com>.
Hello!

I'm not sure, but I think every persistent configuration works as you have
described. It will store unlimited data on disk but `maxSize' in off-heap,
and discard data from off-heap automatically.

Regards,
-- 
Ilya Kasnacheev


пт, 3 апр. 2020 г. в 13:20, Andrey Davydov <an...@gmail.com>:

> Hello, I expect that second configuration store all data on disk and no
> more then  config.node.memory.max byte in offheap. My tests show that this
> configuration works.
> What correct config to achieve this?
>
> On Wed, Apr 1, 2020 at 12:59 PM Ilya Kasnacheev <il...@gmail.com>
> wrote:
>
>> Hello!
>>
>> It should not be possible to change configuration of node when data is
>> already present.
>>
>> Moreover, page eviction settings are supposed to be ignored when
>> persistence is enabled:
>> https://apacheignite.readme.io/docs/evictions
>> Page replacement is prepared instead.
>>
>> I recommend filing an issue about this problem in Apache Ignite JIRA
>> because it is obviously unexpected, but I think that your expectations are
>> also off.
>>
>> Regards,
>> --
>> Ilya Kasnacheev
>>
>>
>> пт, 27 мар. 2020 г. в 17:06, Andrey Davydov <an...@gmail.com>:
>>
>>>
>>>
>>> Hello,
>>>
>>>
>>>
>>> We have Ignite data directory from system with following data region
>>> configuration:
>>>
>>>
>>>
>>>                         <bean
>>> class="org.apache.ignite.configuration.DataRegionConfiguration">
>>>
>>>                             <property name="name"
>>> value="myPersistDataRegion"/>
>>>
>>>                             <property name="persistenceEnabled"
>>> value="true"/>
>>>
>>>
>>>
>>>                             <property name="initialSize"
>>> value="${config.node.memory.initial}"/>
>>>
>>>                             <property name="maxSize"
>>> value="${config.node.memory.max}"/>
>>>
>>>
>>>
>>>                             <property name="pageEvictionMode"
>>> value="DISABLED"/>
>>>
>>>                             <property name="metricsEnabled"
>>> value="true"/>
>>>
>>>                         </bean>
>>>
>>>
>>>
>>> When we update configuration to:
>>>
>>>
>>>
>>>                         <bean
>>> class="org.apache.ignite.configuration.DataRegionConfiguration">
>>>
>>>                             <property name="name"
>>> value="myPersistDataRegion"/>
>>>
>>>                             <property name="persistenceEnabled"
>>> value="true"/>
>>>
>>>
>>>
>>>                             <property name="initialSize"
>>> value="${config.node.memory.initial}"/>
>>>
>>>                             <property name="maxSize"
>>> value="${config.node.memory.max}"/>
>>>
>>>                             <property name="evictionThreshold"
>>> value="${config.node.memory.evict.threshold}"/>
>>>
>>>
>>>
>>>                             <property name="pageEvictionMode"
>>> value="RANDOM_2_LRU"/>
>>>
>>>                             <property name="metricsEnabled"
>>> value="true"/>
>>>
>>>                         </bean>
>>>
>>>
>>>
>>> And restart (exactly same system. Difference only in data region config)
>>> we got following exception. When we change configuration back, everything
>>> works OK and all data present.
>>>
>>> If there is any way to access data from old files with new settings?
>>>
>>>
>>>
>>> org.apache.ignite.IgniteException: Runtime failure on bounds:
>>> [lower=SearchRow [key=null, hash=0, cacheId=2077719173], upper=SearchRow
>>> [key=null, hash=0, cacheId=2077719173]]
>>>
>>>         at
>>> org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:48)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$ScanQueryIterator.advance(GridCacheQueryManager.java:2996)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$ScanQueryIterator.onHasNext(GridCacheQueryManager.java:2965)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.util.GridCloseableIteratorAdapter.hasNextX(GridCloseableIteratorAdapter.java:53)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:45)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> ru.exampl.data.appl.service.business.ModelService.findRunningModels(ModelService.java:945)
>>> ~[appl.jar:?]
>>>
>>>         at
>>> ru.exampl.data.appl.service.business.LocalEnvironmentService.initializeEnvironment(LocalEnvironmentService.java:192)
>>> ~[appl.jar:?]
>>>
>>>         at
>>> ru.exampl.data.appl.service.business.LocalEnvironmentService.afterIgniteSet(LocalEnvironmentService.java:125)
>>> ~[appl.jar:?]
>>>
>>>         at
>>> ru.exampl.data.appl.service.AppServiceNew.lambda$execInner$2(AppServiceNew.java:228)
>>> ~[appl.jar:?]
>>>
>>>         at java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
>>> ~[?:1.8.0_242]
>>>
>>>         at
>>> ru.exampl.data.appl.service.AppServiceNew.execInner(AppServiceNew.java:228)
>>> ~[appl.jar:?]
>>>
>>>         at
>>> ru.exampl.data.appl.service.AppServiceNew.execInLock(AppServiceNew.java:181)
>>> ~[appl.jar:?]
>>>
>>>         at
>>> ru.exampl.data.appl.service.AppServiceNew.execute(AppServiceNew.java:139)
>>> [appl.jar:?]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.service.GridServiceProcessor$3.run(GridServiceProcessor.java:1394)
>>> [ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>>> [?:1.8.0_242]
>>>
>>>         at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>>> [?:1.8.0_242]
>>>
>>>         at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242]
>>>
>>> Caused by:
>>> org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException:
>>> Runtime failure on bounds: [lower=SearchRow [key=null, hash=0,
>>> cacheId=2077719173], upper=SearchRow [key=null, hash=0, cacheId=2077719173]]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.find(BPlusTree.java:1016)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.find(BPlusTree.java:988)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2923)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2894)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2888)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2876)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>        at
>>> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.cursor(GridCacheOffheapManager.java:2075)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$6.onHasNext(IgniteCacheOffheapManagerImpl.java:968)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.util.GridCloseableIteratorAdapter.hasNextX(GridCloseableIteratorAdapter.java:53)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:45)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         ... 16 more
>>>
>>> Caused by: java.lang.IllegalArgumentException: Invalid object type: 0
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessorImpl.toKeyCacheObject(IgniteCacheObjectProcessorImpl.java:166)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.toKeyCacheObject(CacheObjectBinaryProcessorImpl.java:865)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter.readFullRow(CacheDataRowAdapter.java:333)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter.initFromLink(CacheDataRowAdapter.java:167)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter.initFromLink(CacheDataRowAdapter.java:108)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.tree.DataRow.<init>(DataRow.java:55)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.tree.CacheDataRowStore.dataRow(CacheDataRowStore.java:92)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.tree.CacheDataTree.getRow(CacheDataTree.java:200)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.tree.CacheDataTree.getRow(CacheDataTree.java:49)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$ForwardCursor.fillFromBuffer0(BPlusTree.java:5515)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.fillFromBuffer(BPlusTree.java:5283)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.init(BPlusTree.java:5208)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$GetCursor.notFound(BPlusTree.java:2902)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Search.run0(BPlusTree.java:309)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$GetPageHandler.run(BPlusTree.java:5618)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Search.run(BPlusTree.java:274)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$GetPageHandler.run(BPlusTree.java:5603)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.util.PageHandler.readPage(PageHandler.java:159)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.DataStructure.read(DataStructure.java:334)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.findDown(BPlusTree.java:1312)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.doFind(BPlusTree.java:1279)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.access$8700(BPlusTree.java:90)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.find(BPlusTree.java:5292)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.find(BPlusTree.java:1008)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.find(BPlusTree.java:988)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2923)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2894)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2888)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2876)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.cursor(GridCacheOffheapManager.java:2075)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$6.onHasNext(IgniteCacheOffheapManagerImpl.java:968)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.util.GridCloseableIteratorAdapter.hasNextX(GridCloseableIteratorAdapter.java:53)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         at
>>> org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:45)
>>> ~[ignite-core-2.7.6.jar:2.7.6]
>>>
>>>         ... 16 more
>>>
>>>
>>>
>>>
>>>
>>> Andrey.
>>>
>>>
>>>
>>

Re: DataRegionConfiguration update

Posted by Andrey Davydov <an...@gmail.com>.
Hello, I expect that second configuration store all data on disk and no
more then  config.node.memory.max byte in offheap. My tests show that this
configuration works.
What correct config to achieve this?

On Wed, Apr 1, 2020 at 12:59 PM Ilya Kasnacheev <il...@gmail.com>
wrote:

> Hello!
>
> It should not be possible to change configuration of node when data is
> already present.
>
> Moreover, page eviction settings are supposed to be ignored when
> persistence is enabled:
> https://apacheignite.readme.io/docs/evictions
> Page replacement is prepared instead.
>
> I recommend filing an issue about this problem in Apache Ignite JIRA
> because it is obviously unexpected, but I think that your expectations are
> also off.
>
> Regards,
> --
> Ilya Kasnacheev
>
>
> пт, 27 мар. 2020 г. в 17:06, Andrey Davydov <an...@gmail.com>:
>
>>
>>
>> Hello,
>>
>>
>>
>> We have Ignite data directory from system with following data region
>> configuration:
>>
>>
>>
>>                         <bean
>> class="org.apache.ignite.configuration.DataRegionConfiguration">
>>
>>                             <property name="name"
>> value="myPersistDataRegion"/>
>>
>>                             <property name="persistenceEnabled"
>> value="true"/>
>>
>>
>>
>>                             <property name="initialSize"
>> value="${config.node.memory.initial}"/>
>>
>>                             <property name="maxSize"
>> value="${config.node.memory.max}"/>
>>
>>
>>
>>                             <property name="pageEvictionMode"
>> value="DISABLED"/>
>>
>>                             <property name="metricsEnabled" value="true"/>
>>
>>                         </bean>
>>
>>
>>
>> When we update configuration to:
>>
>>
>>
>>                         <bean
>> class="org.apache.ignite.configuration.DataRegionConfiguration">
>>
>>                             <property name="name"
>> value="myPersistDataRegion"/>
>>
>>                             <property name="persistenceEnabled"
>> value="true"/>
>>
>>
>>
>>                             <property name="initialSize"
>> value="${config.node.memory.initial}"/>
>>
>>                             <property name="maxSize"
>> value="${config.node.memory.max}"/>
>>
>>                             <property name="evictionThreshold"
>> value="${config.node.memory.evict.threshold}"/>
>>
>>
>>
>>                             <property name="pageEvictionMode"
>> value="RANDOM_2_LRU"/>
>>
>>                             <property name="metricsEnabled" value="true"/>
>>
>>                         </bean>
>>
>>
>>
>> And restart (exactly same system. Difference only in data region config)
>> we got following exception. When we change configuration back, everything
>> works OK and all data present.
>>
>> If there is any way to access data from old files with new settings?
>>
>>
>>
>> org.apache.ignite.IgniteException: Runtime failure on bounds:
>> [lower=SearchRow [key=null, hash=0, cacheId=2077719173], upper=SearchRow
>> [key=null, hash=0, cacheId=2077719173]]
>>
>>         at
>> org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:48)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$ScanQueryIterator.advance(GridCacheQueryManager.java:2996)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$ScanQueryIterator.onHasNext(GridCacheQueryManager.java:2965)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.util.GridCloseableIteratorAdapter.hasNextX(GridCloseableIteratorAdapter.java:53)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:45)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> ru.exampl.data.appl.service.business.ModelService.findRunningModels(ModelService.java:945)
>> ~[appl.jar:?]
>>
>>         at
>> ru.exampl.data.appl.service.business.LocalEnvironmentService.initializeEnvironment(LocalEnvironmentService.java:192)
>> ~[appl.jar:?]
>>
>>         at
>> ru.exampl.data.appl.service.business.LocalEnvironmentService.afterIgniteSet(LocalEnvironmentService.java:125)
>> ~[appl.jar:?]
>>
>>         at
>> ru.exampl.data.appl.service.AppServiceNew.lambda$execInner$2(AppServiceNew.java:228)
>> ~[appl.jar:?]
>>
>>         at java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
>> ~[?:1.8.0_242]
>>
>>         at
>> ru.exampl.data.appl.service.AppServiceNew.execInner(AppServiceNew.java:228)
>> ~[appl.jar:?]
>>
>>         at
>> ru.exampl.data.appl.service.AppServiceNew.execInLock(AppServiceNew.java:181)
>> ~[appl.jar:?]
>>
>>         at
>> ru.exampl.data.appl.service.AppServiceNew.execute(AppServiceNew.java:139)
>> [appl.jar:?]
>>
>>         at
>> org.apache.ignite.internal.processors.service.GridServiceProcessor$3.run(GridServiceProcessor.java:1394)
>> [ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>> [?:1.8.0_242]
>>
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>> [?:1.8.0_242]
>>
>>         at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242]
>>
>> Caused by:
>> org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException:
>> Runtime failure on bounds: [lower=SearchRow [key=null, hash=0,
>> cacheId=2077719173], upper=SearchRow [key=null, hash=0, cacheId=2077719173]]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.find(BPlusTree.java:1016)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.find(BPlusTree.java:988)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2923)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2894)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2888)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2876)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>        at
>> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.cursor(GridCacheOffheapManager.java:2075)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$6.onHasNext(IgniteCacheOffheapManagerImpl.java:968)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.util.GridCloseableIteratorAdapter.hasNextX(GridCloseableIteratorAdapter.java:53)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:45)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         ... 16 more
>>
>> Caused by: java.lang.IllegalArgumentException: Invalid object type: 0
>>
>>         at
>> org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessorImpl.toKeyCacheObject(IgniteCacheObjectProcessorImpl.java:166)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.toKeyCacheObject(CacheObjectBinaryProcessorImpl.java:865)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter.readFullRow(CacheDataRowAdapter.java:333)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter.initFromLink(CacheDataRowAdapter.java:167)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter.initFromLink(CacheDataRowAdapter.java:108)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.tree.DataRow.<init>(DataRow.java:55)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.tree.CacheDataRowStore.dataRow(CacheDataRowStore.java:92)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.tree.CacheDataTree.getRow(CacheDataTree.java:200)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.tree.CacheDataTree.getRow(CacheDataTree.java:49)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$ForwardCursor.fillFromBuffer0(BPlusTree.java:5515)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.fillFromBuffer(BPlusTree.java:5283)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.init(BPlusTree.java:5208)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$GetCursor.notFound(BPlusTree.java:2902)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Search.run0(BPlusTree.java:309)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$GetPageHandler.run(BPlusTree.java:5618)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Search.run(BPlusTree.java:274)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$GetPageHandler.run(BPlusTree.java:5603)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.util.PageHandler.readPage(PageHandler.java:159)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.DataStructure.read(DataStructure.java:334)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.findDown(BPlusTree.java:1312)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.doFind(BPlusTree.java:1279)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.access$8700(BPlusTree.java:90)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.find(BPlusTree.java:5292)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.find(BPlusTree.java:1008)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.find(BPlusTree.java:988)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2923)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2894)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2888)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.cursor(IgniteCacheOffheapManagerImpl.java:2876)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.cursor(GridCacheOffheapManager.java:2075)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$6.onHasNext(IgniteCacheOffheapManagerImpl.java:968)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.util.GridCloseableIteratorAdapter.hasNextX(GridCloseableIteratorAdapter.java:53)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         at
>> org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:45)
>> ~[ignite-core-2.7.6.jar:2.7.6]
>>
>>         ... 16 more
>>
>>
>>
>>
>>
>> Andrey.
>>
>>
>>
>