[
https://issues.apache.org/jira/browse/IGNITE-23588?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vladimir Pligin reassigned IGNITE-23588:
----------------------------------------
Assignee: 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: Kirill Tkalenko
> 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 [email protected]/java.lang.Thread.run(Thread.java:834) {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)