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

Vyacheslav Koptilin updated IGNITE-12618:
-----------------------------------------
    Description: 
After IGNITE-11465 implemented, there's still a corner case when we can get 
"Getting affinity for topology version earlier than affinity is calculated" 
error.
 If the whole history (not more than 
GridAffinityAssignmentCache#MAX_HIST_LINKS_SIZE entries) consists of shallow 
copies for client events, we may be not able to fetch affinity cache for last 
affinity change version.
 We need to make GridAffinityAssignmentCache#cachedAffinity work if affinity 
version no less than [last affinity change version] is passed as an argument.

*UPDATE*

GridAffinityProcessor#affMap and GridAffinityAssignmentCache#affCache store 
objects for every topology version (within history range). Mappings inside are 
only shallow copies of each other, but corner-case, when cluster experiences 
unlimited client / local cache topology events, will still cause OOM - at least 
two reference objects are created for each topology version.
We can't store a fixed number of entries either. The best solution would be not 
storing instances for client events at all. This may require severe refactoring 
of affinity assignment related logic.

  was:
After  IGNITE-11465 implemented, there's still a corner case when we can get 
"Getting affinity for topology version earlier than affinity is calculated" 
error.
If the whole history (not more than 
GridAffinityAssignmentCache#MAX_HIST_LINKS_SIZE entries) consists of shallow 
copies for client events, we may be not able to fetch affinity cache for last 
affinity change version.
We need to make GridAffinityAssignmentCache#cachedAffinity work if affinity 
version no less than [last affinity change version] is passed as an argument.


> Affinity cache for version of last server event can be wiped from history
> -------------------------------------------------------------------------
>
>                 Key: IGNITE-12618
>                 URL: https://issues.apache.org/jira/browse/IGNITE-12618
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 2.8
>            Reporter: Vyacheslav Koptilin
>            Assignee: Vyacheslav Koptilin
>            Priority: Major
>             Fix For: 2.9
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> After IGNITE-11465 implemented, there's still a corner case when we can get 
> "Getting affinity for topology version earlier than affinity is calculated" 
> error.
>  If the whole history (not more than 
> GridAffinityAssignmentCache#MAX_HIST_LINKS_SIZE entries) consists of shallow 
> copies for client events, we may be not able to fetch affinity cache for last 
> affinity change version.
>  We need to make GridAffinityAssignmentCache#cachedAffinity work if affinity 
> version no less than [last affinity change version] is passed as an argument.
> *UPDATE*
> GridAffinityProcessor#affMap and GridAffinityAssignmentCache#affCache store 
> objects for every topology version (within history range). Mappings inside 
> are only shallow copies of each other, but corner-case, when cluster 
> experiences unlimited client / local cache topology events, will still cause 
> OOM - at least two reference objects are created for each topology version.
> We can't store a fixed number of entries either. The best solution would be 
> not storing instances for client events at all. This may require severe 
> refactoring of affinity assignment related logic.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to