Toshihiro Suzuki created HBASE-25576:
----------------------------------------

             Summary: Should not use HashMap (ConcurrentHashMap) or HashSet 
when using byte[] as a key of Map or an element of Set
                 Key: HBASE-25576
                 URL: https://issues.apache.org/jira/browse/HBASE-25576
             Project: HBase
          Issue Type: Bug
            Reporter: Toshihiro Suzuki


I sometimes face the code using HashMap (ConcurrentHashMap) or HashSet when 
using byte[] as a key of Map or an element of Set in the HBase code, which 
could cause very confusing bugs.

We should use TreeMap (ConcurrentSkipListMap) or TreeSet 
(ConcurrentSkipListSet) with Bytes.BYTES_COMPARATOR when using byte[] as a key 
of Map or an element of Set 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.3.4#803005)

Reply via email to