[ 
https://issues.apache.org/jira/browse/IGNITE-7987?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pavel Kovalenko updated IGNITE-7987:
------------------------------------
    Description: 
Currently we pass only last (or first in some cases) discovery event for 
affinity calculation at GridAffinityAssignmentCache.

Affinity calculation can be skipped if such discovery event belongs to client 
node or node filtered by nodeFilter for optimization issues (because affinity 
will not be changed in such case).

Since we have exchange merging there can be several discovery events 
corresponds to one exchange. Passing only first or last event for affinity 
calculation is wrong, because calculation in such case can be skipped, while 
exchange actually contains events changing affinity.

Instead of first/last event we should pass whole collection of discovery events 
(ExchangeDiscoveryEvents) and skip affinity calculation for a group only when 
ALL events doesn't change affinity for such group.

  was:
Currently we pass only last (or first in some cases) discovery event for 
affinity calculation at GridAffinityAssignmentCache.

Affinity calculation can be skipped if such discovery event belongs to client 
node or node filtered by nodeFilter for optimization issues (because affinity 
will not be changed in such case).

Since we have exchange merging there can be several discovery events 
corresponds to one exchange. Passing only first or last event for affinity 
calculation is wrong, because calculation can be skipped, while exchange 
actually contains events changing affinity.

Instead of first/last event we should pass whole collection of discovery events 
(ExchangeDiscoveryEvents) and skip affinity calculation for a group only when 
ALL events doesn't change affinity for such group.


> Affinity may be not calculated properly in case of merged exchanges with 
> client nodes
> -------------------------------------------------------------------------------------
>
>                 Key: IGNITE-7987
>                 URL: https://issues.apache.org/jira/browse/IGNITE-7987
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache
>    Affects Versions: 2.4
>            Reporter: Pavel Kovalenko
>            Assignee: Pavel Kovalenko
>            Priority: Major
>             Fix For: 2.5
>
>
> Currently we pass only last (or first in some cases) discovery event for 
> affinity calculation at GridAffinityAssignmentCache.
> Affinity calculation can be skipped if such discovery event belongs to client 
> node or node filtered by nodeFilter for optimization issues (because affinity 
> will not be changed in such case).
> Since we have exchange merging there can be several discovery events 
> corresponds to one exchange. Passing only first or last event for affinity 
> calculation is wrong, because calculation in such case can be skipped, while 
> exchange actually contains events changing affinity.
> Instead of first/last event we should pass whole collection of discovery 
> events (ExchangeDiscoveryEvents) and skip affinity calculation for a group 
> only when ALL events doesn't change affinity for such group.



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

Reply via email to