[
https://issues.apache.org/jira/browse/HBASE-25576?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17695134#comment-17695134
]
Toshihiro Suzuki commented on HBASE-25576:
------------------------------------------
[~umesh9414] If the PR for this Jira is going to be bulky, you can split it
into multiple PRs. If you want to work on this, you can assign it to you and go
ahead.
> Should not use a byte array as a key of HashMap or an element of HashSet
> ------------------------------------------------------------------------
>
> Key: HBASE-25576
> URL: https://issues.apache.org/jira/browse/HBASE-25576
> Project: HBase
> Issue Type: Bug
> Reporter: Toshihiro Suzuki
> Priority: Major
> Labels: beginner
>
> I sometimes face the code where we use a byte array as a key of HashMap
> (ConcurrentHashMap) or an element of HashSet, which could cause very
> confusing bugs.
> The following code is an example where we use a byte array as a key of
> HashMap:
> https://github.com/apache/hbase/blob/326835e8372cc83092e0ec127650438ff153476a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/SequenceIdAccounting.java#L94
> In Java, we can't use a byte array as a key of HashMap or an element of
> HashSet directly. One solution for it is to use TreeMap
> (ConcurrentSkipListMap) or TreeSet (ConcurrentSkipListSet) with
> Bytes.BYTES_COMPARATOR instead of HashMap and HashSet as follows:
> {code}
> Map<byte[], String> map1 = new TreeMap<>(Bytes.BYTES_COMPARATOR);
> Map<byte[], String> map2 = new
> ConcurrentSkipListMap<>(Bytes.BYTES_COMPARATOR);
> Set<byte[]> set1 = new TreeSet<>(Bytes.BYTES_COMPARATOR);
> Set<byte[]> set2 = new ConcurrentSkipListSet<>(Bytes.BYTES_COMPARATOR);
> {code}
> We should fix the existing ones in this Jira.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)