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