[
https://issues.apache.org/jira/browse/HBASE-20196?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16400196#comment-16400196
]
Eshcar Hillel commented on HBASE-20196:
---------------------------------------
The code
{code:java}
if (!sortedRegions.containsKey(size)) {
sortedRegions.put(size, new ArrayList<>());
}
sortedRegions.get(size).add(region);
{code}
can be extracted to a method that gets sortedRegions and size so it is not
duplicated 3 times.
other than that looks ok.
> Maintain all regions with same size in memstore flusher
> -------------------------------------------------------
>
> Key: HBASE-20196
> URL: https://issues.apache.org/jira/browse/HBASE-20196
> Project: HBase
> Issue Type: Improvement
> Reporter: Ted Yu
> Assignee: Ted Yu
> Priority: Major
> Attachments: 20196.v1.txt
>
>
> Here is the javadoc for getCopyOfOnlineRegionsSortedByOffHeapSize() :
> {code}
> * the biggest. If two regions are the same size, then the last one
> found wins; i.e. this
> * method may NOT return all regions.
> {code}
> Currently value type is HRegion - we only store one region per size.
> I think we should change value type to Collection<HRegion> so that we don't
> miss any region (potentially with big size).
> e.g. Suppose there are there regions (R1, R2 and R3) with sizes 100, 100 and
> 1, respectively.
> Using the current data structure, R2 would be stored in the Map, evicting R1
> from the Map.
> This means that the current code would choose to flush regions R2 and R3,
> releasing 101 from memory.
> If value type is changed to Collection<HRegion>, we would flush both R1 and
> R2. This achieves faster memory reclamation.
> Confirmed with [~eshcar] over in HBASE-20090
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)