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

Reply via email to