You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Wellington Chevreuil (Jira)" <ji...@apache.org> on 2022/12/19 12:16:00 UTC

[jira] [Resolved] (HBASE-27474) Evict blocks on split/merge; Avoid caching reference/hlinks if compaction is enabled

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

Wellington Chevreuil resolved HBASE-27474.
------------------------------------------
    Release Note: 
This modifies behaviour of block cache management as follows:
1) Always evict blocks for the files from parent split region once it's closed, regardless of the "hbase.rs.evictblocksonclose" configured value;
2) If compactions are enabled, doesn't cache blocks for the refs/link files under split daughters once these regions are opened;

For #1 above, an additional evict_cache property has been added to the CloseRegionRequest protobuf message. It's default to false. Rolling upgrading cluster would retain the previous behaviour on RSes not yet upgraded.

      Resolution: Fixed

Thanks for the review [~psomogyi] ! Had merged into master and branch-2.

> Evict blocks on split/merge; Avoid caching reference/hlinks if compaction is enabled
> ------------------------------------------------------------------------------------
>
>                 Key: HBASE-27474
>                 URL: https://issues.apache.org/jira/browse/HBASE-27474
>             Project: HBase
>          Issue Type: Improvement
>    Affects Versions: 3.0.0-alpha-3
>            Reporter: Wellington Chevreuil
>            Assignee: Wellington Chevreuil
>            Priority: Major
>             Fix For: 2.6.0, 3.0.0-alpha-4
>
>
> This change aims to improve block cache usage upon splits/merges. On a split/merge event the following main steps happen:
> 1) parent regions are closed; 2) daughters are created and opened with refs/hlinks; 3) Compaction is triggered soon after the daughters get online;
> With "hbase.rs.evictblocksonclose" set to false, we keep all blocks for the closed regions in 1, then will try to load same blocks again on 2 (since we are using the refs/links for the cache key), just to throw it away and cache the compaction resulting file in 3. 
> If the block cache is close to its capacity, blocks from the compacted files in 3 will likely miss the cache.
> The proposal here is to always evict blocks for parent regions on a split/merge event, and also avoid caching blocks for refs/hlinks if compactions are enabled. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)