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 <[email protected]> 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 <[email protected]>: > >> >> >> 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. >> >> >> >
