[ https://issues.apache.org/jira/browse/IGNITE-23588?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ivan Bessonov updated IGNITE-23588: ----------------------------------- Description: {{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 800 (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} was: {{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} > 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 800 (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)