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.
>>
>>
>>
>