[ https://issues.apache.org/jira/browse/IGNITE-16518?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17490089#comment-17490089 ]
Ignite TC Bot commented on IGNITE-16518: ---------------------------------------- {panel:title=Branch: [pull/9813/head] Base: [master] : No blockers found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel} {panel:title=Branch: [pull/9813/head] Base: [master] : New Tests (5)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1} {color:#00008b}Basic 1{color} [[tests 3|https://ci.ignite.apache.org/viewLog.html?buildId=6411830]] * {color:#013220}IgniteBasicTestSuite: BPlusTreeFakeReuseSelfTest.testEmptyLeafAfterConcurrentRemoves - PASSED{color} * {color:#013220}IgniteBasicTestSuite: BPlusTreeReuseSelfTest.testEmptyLeafAfterConcurrentRemoves - PASSED{color} * {color:#013220}IgniteBasicTestSuite: BPlusTreeSelfTest.testEmptyLeafAfterConcurrentRemoves - PASSED{color} {color:#00008b}PDS 1{color} [[tests 2|https://ci.ignite.apache.org/viewLog.html?buildId=6411890]] * {color:#013220}IgnitePdsTestSuite: BPlusTreePageMemoryImplTest.testEmptyLeafAfterConcurrentRemoves - PASSED{color} * {color:#013220}IgnitePdsTestSuite: BPlusTreeReuseListPageMemoryImplTest.testEmptyLeafAfterConcurrentRemoves - PASSED{color} {panel} [TeamCity *--> Run :: All* Results|https://ci.ignite.apache.org/viewLog.html?buildId=6411916&buildTypeId=IgniteTests24Java8_RunAll] > BPlusTreeReuseListPageMemoryImplTest.testMassiveRemove2_true flaky > ------------------------------------------------------------------ > > Key: IGNITE-16518 > URL: https://issues.apache.org/jira/browse/IGNITE-16518 > Project: Ignite > Issue Type: Bug > Components: data structures > Reporter: Kirill Tkalenko > Assignee: Kirill Tkalenko > Priority: Major > Fix For: 2.13 > > Time Spent: 10m > Remaining Estimate: 0h > > Found that the test sometimes fails: > *BPlusTreeReuseListPageMemoryImplTest.testMassiveRemove2_true* flaky. > https://ci.ignite.apache.org/project.html?tab=testDetails&projectId=IgniteTests24Java8&testNameId=7031624718556126435&page=1 > Explanation > {noformat} > Here’s a tree and a set of operations that lead to undesired results: > [ 2 ] > / \ > [ 1 ] [ 3 | 4 ] > / \ / | \ > [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] > // Remove 2 > [ 1 ] > / \ > [ ] [ 3 | 4 ] > | / | \ > [ 1 ] [ 3 ] [ 4 ] [ 5 ] > // Remove 5 > [ 1 ] > / \ > [ ] [ 3 ] > | / \ > [ 1 ] [ 3 ] [ 4 ] > // Remove 4 > [ 1 ] > / \ > [ ] [ ] > | | > [ 1 ] [ 3 ] > // Remove 3 > [ 1 ] > | > [ ] > | > [ 1 ] > // Remove 1 > [ ] > | > [ ] > {noformat} > It’s clear that at some point we have a whole level consisting of routing > nodes. This later leads to somewhat incorrect “cut tree root” operation that > leaves empty leaf. > Possible solutions > * root cutting should probably be recursive and should proceed until root > node is not empty or is a leaf. > * merge operation should work better with routing nodes - every time there’s > a merge, we should consider the possibility to merge empty neighbor as well. > * re-balance data from neighbor when node becomes a router node. Might be > impossible or very challenging in current implementation. > Option 1 is the easiest one. Given the rarity of the case, I’d go with it. -- This message was sent by Atlassian Jira (v8.20.1#820001)