[ https://issues.apache.org/jira/browse/HBASE-14306?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14742426#comment-14742426 ]
Yu Li commented on HBASE-14306: ------------------------------- This change is made according to Chunhui's review comment, and the reason is that we cannot make sure no duplicated values in cached map, but we should only count each provider once in getNumLogFiles and getLogFIleSize. Although the semantic should be one wal group mapping to a uniq provider, ConcurrentHashMap itself cannot make sure about such 1-1 mapping, and adding a HashSet could make it more robust. > Refine RegionGroupingProvider: fix issues and make it more scalable > ------------------------------------------------------------------- > > Key: HBASE-14306 > URL: https://issues.apache.org/jira/browse/HBASE-14306 > Project: HBase > Issue Type: Improvement > Components: wal > Affects Versions: 2.0.0, 1.1.2 > Reporter: Yu Li > Assignee: Yu Li > Fix For: 2.0.0, 1.3.0 > > Attachments: HBASE-14306.patch, HBASE-14306_v2.patch, > HBASE-14306_v3.patch, HBASE-14306_v3.patch, HBASE-14306_v4.patch > > > There're multiple issues in RegionGroupingProvider, including: > * The provider cache in it is using byte array as the key of > ConcurrentHashMap, which is not right (the reason is > [here|http://stackoverflow.com/questions/1058149/using-a-byte-array-as-hashmap-key-java]) > * It's using IdentityGroupingStrategy to get group and use it as key of the > cache, which means the cache will include an entry for each region. This is > especially unnecessary when using BoundedRegionGroupingProvider > Besides fixing the above issues, I suggest to change > BoundedRegionGroupingProvider from a *provider* to a pluggable *strategy*, > which will make the whole picture much more clear. > For more details, please refer to the patch -- This message was sent by Atlassian JIRA (v6.3.4#6332)