[ 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)