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

Ivan Rakov updated IGNITE-13052:
--------------------------------
    Remaining Estimate: 80h  (was: 240h)
     Original Estimate: 80h  (was: 240h)

> Calculate result of reserveHistoryForExchange in advance
> --------------------------------------------------------
>
>                 Key: IGNITE-13052
>                 URL: https://issues.apache.org/jira/browse/IGNITE-13052
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Ivan Rakov
>            Priority: Major
>   Original Estimate: 80h
>  Remaining Estimate: 80h
>
> Method reserveHistoryForExchange() is called on every partition map exchange. 
> It's an expensive call: it requires iteration over the whole checkpoint 
> history with possible retrieve of GroupState from WAL (it's stored on heap 
> with SoftReference). On some deployments this operation can take several 
> minutes.
> The idea of optimization is to calculate it's result only on first PME 
> (ideally, even before first PME, on recovery stage), keep resulting map 
> {grpId, partId -> earlisetCheckpoint} on heap and update it if necessary. 
> From the first glance, map should be updated:
> 1) On checkpoint. If a new partition appears on local node, it should be 
> registered in the map with current checkpoint. If a partition is evicted from 
> local node, or changed its state to non-OWNING, it should removed from the 
> map. If checkpoint is marked as inapplicable for a certain group, the whole 
> group should be removed from the map.
> 2) On checkpoint history cleanup. For every (grpId, partId), previous 
> earliest checkpoint should be changed with setIfGreater to new earliest 
> checkpoint.
> Memory overhead of storing described map on heap in significant. It's size 
> isn't greater than size of map returned from reserveHistoryForExchange().
> Described fix should be much simpler than IGNITE-12429.



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

Reply via email to