[ 
https://issues.apache.org/jira/browse/HBASE-18251?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16094261#comment-16094261
 ] 

Toshihiro Suzuki commented on HBASE-18251:
------------------------------------------

[~ram_krish] No we can't for the following reason:

delegatee is a ConcurrentSkipListMap when the following CellSet constructor is 
instantiated: CellSet(final CellComparator c). And, ConcurrentSkipListMap.put() 
doesn't replace the key when the map previously contained a mapping for the 
key. So this.delegatee.firstKey() will return the old cell instance even though 
we overwrite the value by using ConcurrentSkipListMap.put().

> Remove unnecessary traversing to the first and last keys in the CellSet
> -----------------------------------------------------------------------
>
>                 Key: HBASE-18251
>                 URL: https://issues.apache.org/jira/browse/HBASE-18251
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Anastasia Braginsky
>            Assignee: Toshihiro Suzuki
>         Attachments: HBASE-18251.patch, HBASE-18251-v2.patch
>
>
> The implementation of finding the first and last keys in the CellSet is as 
> following:
> {code}
>  public Cell first() {
>     return this.delegatee.get(this.delegatee.firstKey());
>   }
>   public Cell last() {
>     return this.delegatee.get(this.delegatee.lastKey());
>   }
> {code}
> Recall we have Cell to Cell mapping, therefore the methods bringing the 
> first/last key, which allready return Cell. Thus no need to waist time on the 
> get() method for the same Cell.
> Fix: return just the first/lastKey(), should be at least twice more effective.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to