[
https://issues.apache.org/jira/browse/IGNITE-25503?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17956109#comment-17956109
]
Sergey Korotkov commented on IGNITE-25503:
------------------------------------------
Actually fixed in scope of the IGNITE-17734
Reason of the *zero* case is the same as in IGNITE-17734. The C2 Jit broken
{{PagesList$CutTail::run}} is called for old bucket's tail page and generates
the exception. Because of the exception two bad things occur:
- zero nextId is written to page previous to old tail (which makes it looks
like new tail one)
- pageId of page previous to old tail is not saved as new actual bucket's tail
So this causes the next *non-zero* case which occur during removal of the last
row. The last page in bucket looks like tail (nextId is zeroed by mistake in
"zero" case above) but it's not listed in list of tails.
> CorruptedFreeListException on cache clear calling mergeNoNext (jdk17,
> Shenandoah CG)
> ------------------------------------------------------------------------------------
>
> Key: IGNITE-25503
> URL: https://issues.apache.org/jira/browse/IGNITE-25503
> Project: Ignite
> Issue Type: Bug
> Reporter: Sergey Korotkov
> Assignee: Sergey Korotkov
> Priority: Major
> Labels: ise
> Time Spent: 10m
> Remaining Estimate: 0h
>
> * JDK17
> * Shenandoah GC
> * assertions OFF
> * in memory
> {{java.lang.IllegalStateException: Tail not found: 289074797055364410}}
> exception is thrown during cache clear.
> Possibly there are concurrent updates/deletes to other caches.
> This problem reproduced simultaneously with the one described in IGNITE-17734
> {noformat}
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl:
> Failed to clear cache entry: KeyCacheObjectImpl [part=753,
> val=FrseteFCj0mYYtuI66OG31uAFIdZdng0, hasValBytes=true]:
> org.apache.ignite.internal.proce
> ssors.cache.persistence.freelist.CorruptedFreeListException: Failed to remove
> data by link Caused by: java.lang.IllegalStateException: Tail not found:
> 289074797055364410
> class
> org.apache.ignite.internal.processors.cache.persistence.freelist.CorruptedFreeListException:
> Failed to remove data by link
> at
> org.apache.ignite.internal.processors.cache.persistence.freelist.AbstractFreeList.removeDataRowByLink(AbstractFreeList.java:839)
> at
> org.apache.ignite.internal.processors.cache.persistence.RowStore.removeRow(RowStore.java:89)
> at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.finishRemove(IgniteCacheOffheapManagerImpl.java:1766)
> at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.remove(IgniteCacheOffheapManagerImpl.java:1736)
> at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.remove(IgniteCacheOffheapManagerImpl.java:420)
> at
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.removeValue(GridCacheMapEntry.java:3549)
> at
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.clear(GridCacheMapEntry.java:1903)
> at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.clearCache(IgniteCacheOffheapManagerImpl.java:478)
> at
> org.apache.ignite.internal.processors.cache.GridCacheClearAllRunnable.run(GridCacheClearAllRunnable.java:84)
> at
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.clearLocally(GridCacheAdapter.java:1039)
> at
> org.apache.ignite.internal.processors.cache.GridCacheProxyImpl.clearLocally(GridCacheProxyImpl.java:939)
> at
> org.apache.ignite.internal.processors.cache.GridCacheAdapter$GlobalClearAllJob.localExecute(GridCacheAdapter.java:5091)
> at
> org.apache.ignite.internal.processors.cache.GridCacheAdapter$TopologyVersionAwareJob.execute(GridCacheAdapter.java:6123)
> at
> org.apache.ignite.internal.processors.job.GridJobWorker$1.call(GridJobWorker.java:628)
> at
> org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:7474)
> at
> org.apache.ignite.internal.processors.job.GridJobWorker.execute0(GridJobWorker.java:622)
> at
> org.apache.ignite.internal.processors.job.GridJobWorker.body(GridJobWorker.java:547)
> at
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
> at
> org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1367)
> at
> org.apache.ignite.internal.processors.job.GridJobProcessor$JobExecutionListener.onMessage(GridJobProcessor.java:2223)
> at
> org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1893)
> at
> org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1514)
> at
> org.apache.ignite.internal.managers.communication.GridIoManager$9.execute(GridIoManager.java:1418)
> at
> org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:55)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
> at java.base/java.lang.Thread.run(Thread.java:840)
> Caused by: java.lang.IllegalStateException: Tail not found: 289074797055364410
> at
> org.apache.ignite.internal.processors.cache.persistence.freelist.PagesList.findTailIndex(PagesList.java:731)
> at
> org.apache.ignite.internal.processors.cache.persistence.freelist.PagesList.updateTail(PagesList.java:678)
> at
> org.apache.ignite.internal.processors.cache.persistence.freelist.PagesList.mergeNoNext(PagesList.java:1756)
> at
> org.apache.ignite.internal.processors.cache.persistence.freelist.PagesList.removeDataPage(PagesList.java:1705)
> at
> org.apache.ignite.internal.processors.cache.persistence.freelist.AbstractFreeList$RemoveRowHandler.run(AbstractFreeList.java:405)
> at
> org.apache.ignite.internal.processors.cache.persistence.freelist.AbstractFreeList$RemoveRowHandler.run(AbstractFreeList.java:359)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.util.PageHandler.writePage(PageHandler.java:313)
> at
> org.apache.ignite.internal.processors.cache.persistence.DataStructure.write(DataStructure.java:325)
> at
> org.apache.ignite.internal.processors.cache.persistence.freelist.AbstractFreeList.removeDataRowByLink(AbstractFreeList.java:815)
> {noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)