[
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 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}
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 [email protected]/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
> 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)