[
https://issues.apache.org/jira/browse/HBASE-20209?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16401344#comment-16401344
]
Duo Zhang commented on HBASE-20209:
-----------------------------------
The fix here seems fine but if you want to pure other containsKey calls in the
replication related code then you need to be careful.
You should be care abort that a HashMap in java does accept null value, so a
get which returns null does not mean that the containsKey will return false...
Especially for replication, the TableCFs map is used to record the table and
its column families we want to replicate. If we want to replicate all the
column families, then we use a null or empty list to indicate this.
Thanks.
> Do Not Use Both Map containsKey and get Methods
> -----------------------------------------------
>
> Key: HBASE-20209
> URL: https://issues.apache.org/jira/browse/HBASE-20209
> Project: HBase
> Issue Type: Improvement
> Components: hbase
> Affects Versions: 2.0.0
> Reporter: BELUGA BEHR
> Assignee: BELUGA BEHR
> Priority: Trivial
> Attachments: HBASE-20209.1.patch
>
>
> {code:title=ReplicationSink.java}
> String tableName = table.getNameWithNamespaceInclAsString();
> if (bulkLoadHFileMap.containsKey(tableName)) {
> List<Pair<byte[], List<String>>> familyHFilePathsList =
> bulkLoadHFileMap.get(tableName);
> boolean foundFamily = false;
> for (int i = 0; i < familyHFilePathsList.size(); i++) {
> Pair<byte[], List<String>> familyHFilePathsPair =
> familyHFilePathsList.get(i);
> if (Bytes.equals(familyHFilePathsPair.getFirst(), family)) {
> // Found family already present, just add the path to the
> existing list
> familyHFilePathsPair.getSecond().add(pathToHfileFromNS);
> foundFamily = true;
> break;
> }
> }
> {code}
> I propose that this code does not use the Map methods _containsKey_ *and*
> _get_. Simply use the _get_ method once and check a _null_ return value to
> check for existence. Saves a trip to the Map data structure for each call.
> Also, use enhanced for loop.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)