[ 
https://issues.apache.org/jira/browse/IGNITE-23588?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ivan Bessonov reassigned IGNITE-23588:
--------------------------------------

    Assignee: Ivan Bessonov  (was: Kirill Tkalenko)

> B+Tree corruption during concurrent removes
> -------------------------------------------
>
>                 Key: IGNITE-23588
>                 URL: https://issues.apache.org/jira/browse/IGNITE-23588
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Ivan Bessonov
>            Assignee: Ivan Bessonov
>            Priority: Critical
>              Labels: ignite-3
>
> {{ItBplusTreePersistentPageMemoryTest#testMassiveRemove2_true}} fails on TC 
> sometimes.
> Can be reproduced locally. In order to make it faster, data region can be 
> reduced to 32Mb, number of threads to 16 and number of keys to about 8000 (I 
> used {{{}threads*50{}}}).
> It's not clear how precisely it happens, but during a remove the 
> {{needReplaceInner}} logic does not work as it should sometimes, leading to 
> an inner node that holds an obsolete key.
> Must be fixed in both Ignite 2 and Ignite 3.
> {code:java}
> [org.apache.ignite.internal.pagememory.tree.persistence.ItBplusTreePersistentPageMemoryTest.testMassiveRemove2_true()]
>  org.opentest4j.AssertionFailedError: Removed row: 
> 683[11:44:19][org.apache.ignite.internal.pagememory.tree.persistence.ItBplusTreePersistentPageMemoryTest.testMassiveRemove2_true()]
>  org.opentest4j.AssertionFailedError: Removed row: 683
>       at 
> app//org.apache.ignite.internal.pagememory.tree.AbstractBplusTreePageMemoryTest$LongInnerIo.checkNotRemoved(AbstractBplusTreePageMemoryTest.java:2948)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.AbstractBplusTreePageMemoryTest$LongInnerIo.getLookupRow(AbstractBplusTreePageMemoryTest.java:2965)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.AbstractBplusTreePageMemoryTest$LongInnerIo.getLookupRow(AbstractBplusTreePageMemoryTest.java:2918)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.AbstractBplusTreePageMemoryTest$TestTree.compare(AbstractBplusTreePageMemoryTest.java:2844)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.AbstractBplusTreePageMemoryTest$TestTree.compare(AbstractBplusTreePageMemoryTest.java:2787)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.BplusTree.compare(BplusTree.java:5748)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.BplusTree.findInsertionPoint(BplusTree.java:5652)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.BplusTree$Search.run0(BplusTree.java:398)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.BplusTree$GetPageHandler.run(BplusTree.java:6422)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.BplusTree$Search.run(BplusTree.java:370)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.BplusTree$GetPageHandler.run(BplusTree.java:6398)
>       at 
> app//org.apache.ignite.internal.pagememory.util.PageHandler.readPage(PageHandler.java:157)
>       at 
> app//org.apache.ignite.internal.pagememory.datastructure.DataStructure.read(DataStructure.java:391)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.BplusTree.read(BplusTree.java:6639)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.BplusTree.removeDown(BplusTree.java:2300)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.BplusTree.removeDown(BplusTree.java:2320)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.BplusTree.removeDown(BplusTree.java:2320)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.BplusTree.doRemove(BplusTree.java:2238)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.BplusTree.remove(BplusTree.java:2067)
>       at 
> app//org.apache.ignite.internal.pagememory.tree.AbstractBplusTreePageMemoryTest.lambda$doTestMassiveRemove$0(AbstractBplusTreePageMemoryTest.java:894)
>       at 
> app//org.apache.ignite.internal.testframework.IgniteTestUtils.lambda$runMultiThreaded$2(IgniteTestUtils.java:569)
>       at java.base@11.0.17/java.lang.Thread.run(Thread.java:834) {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to