[
https://issues.apache.org/jira/browse/HBASE-14306?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14742398#comment-14742398
]
Ted Yu commented on HBASE-14306:
--------------------------------
{code}
241 private Set<WALProvider> getCurrentProviders() {
242 Set<WALProvider> providerSet = new HashSet<WALProvider>();
243 for (WALProvider provider : this.cached.values()) {
244 providerSet.add(provider);
{code}
Do we need the extra HashSet ?
The callers just iterate through the return value from the above method.
ConcurrentHashMap.java#ConcurrentHashMap.Values returns a Collection which can
be iterated. Looks like returning this.cached.values() from above method should
suffice.
> 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)