[
https://issues.apache.org/jira/browse/HBASE-21021?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16571775#comment-16571775
]
Nihal Jain edited comment on HBASE-21021 at 8/7/18 3:55 PM:
------------------------------------------------------------
As we are adding the entries in {{tempMemStore}} in ordered manner i.e. ordered
by column family names (see
[HRegion.java#L7821|https://github.com/apache/hbase/blob/1b50fe53724aa62a242b74444f64adf7845048df/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java#L7821]
and
[HRegion.java#L7766|https://github.com/apache/hbase/blob/1b50fe53724aa62a242b74444f64adf7845048df/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java#L7766]),
we can use a {{LinkedHashMap}} for {{tempMemstore}}, instead of a {{HashMap}}.
this will ensure that entries are ordered when result is returned.
was (Author: nihaljain.cs):
As we are adding the entries in tempMemStore in ordered manner i.e. ordered by
column family names (see
[HRegion.java#L7821|https://github.com/apache/hbase/blob/1b50fe53724aa62a242b74444f64adf7845048df/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java#L7821]
and
[HRegion.java#L7766|https://github.com/apache/hbase/blob/1b50fe53724aa62a242b74444f64adf7845048df/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java#L7766]),
we can use a LinkedHashMap for tempMemstore, instead of a HashMap. this will
ensure taht entries are ordered when result is returned.
> Result returned by Append operation should be ordered
> -----------------------------------------------------
>
> Key: HBASE-21021
> URL: https://issues.apache.org/jira/browse/HBASE-21021
> Project: HBase
> Issue Type: Bug
> Affects Versions: 1.3.0, 1.5.0
> Reporter: Nihal Jain
> Assignee: Nihal Jain
> Priority: Major
> Fix For: 1.5.0
>
> Attachments: HBASE-21021.branch-1.001.patch
>
>
> *Problem:*
> The result returned by the append operation should be ordered. Currently, it
> returns an unordered list, which may cause problems like if the user tries to
> perform Result.getValue(byte[] family, byte[] qualifier), even if the
> returned result has a value corresponding to (family, qualifier), the method
> may return null as it performs a binary search over the unsorted result
> (which should have been sorted actually).
>
> The result is enumerated by iterating over each entry of tempMemstore hashmap
> (which will never be ordered) and adding the values (see
> [HRegion.java#L7882|https://github.com/apache/hbase/blob/1b50fe53724aa62a242b74444f64adf7845048df/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java#L7882]).
>
> *Actual:* The returned result is unordered
> *Expected:* Similar to increment op, the returned result should be ordered.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)