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