[ 
https://issues.apache.org/jira/browse/IGNITE-11330?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16866855#comment-16866855
 ] 

Pavel Pereslegin commented on IGNITE-11330:
-------------------------------------------

[~amashenkov], first, as I see, you have already fixed the main issue described 
in this ticket ("partition demander should skip entries for invalid partition") 
in IGNITE-10561.

_> Why we go this way? Is the test correct?_

I found that this refers to IGNITE-8554 and, from my point of view the main 
reason is historical rebalancing. We can estimate the number of keys for 
historical rebalancing by partition counters, so "estimatedRebalancingKeys" 
should be calculated from partition update counters. And since in optimistic 
scenario "estimated keys count" should be equal to "received keys count" the 
number of received keys should be calculated in the same way.

But I found the useless code in supplier/demander and offheapmanager, which is 
associated with the property "estimatedKeysCount" in 
GridDhtPartitionSupplyMessage (now it's always "-1"). I think we can remove 
unused code and replace "TODO" that refers to this ticket with comments.

What do you think?

> Partition demander should skip entries for invalid partition.
> -------------------------------------------------------------
>
>                 Key: IGNITE-11330
>                 URL: https://issues.apache.org/jira/browse/IGNITE-11330
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache
>            Reporter: Andrew Mashenkov
>            Priority: Major
>              Labels: performance, rebalance
>             Fix For: 2.8
>
>
> For now Partition demander tries to process all entries for invalid partition 
> instead of switching to the next partition.
> Looks like, this was introduced with a fix IGNITE-8955 to make checkpoint 
> locks fine-grained.
> A "for" loop under checkpoint readlock in 
> GridDhtPartitionDemander.handleSupplyMessage() causes the issue. A flow can 
> breaks inner "for" loop in case of invalid partition, but seems an outer 
> "while" loop expected.
>  
> To resolve this we can e.g. move CacheEntryInfo collection processing into 
> separate method and just exit from it if invalid partition is detected.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to