hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hudson (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-11541) Wrong result when scaning meta with startRow
Date Mon, 21 Jul 2014 23:54:39 GMT

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

Hudson commented on HBASE-11541:
--------------------------------

FAILURE: Integrated in HBase-1.0 #59 (See [https://builds.apache.org/job/HBase-1.0/59/])
HBASE-11541 Wrong result when scaning meta with startRow (Liu Shaoqui) (stack: rev c2af53be7dd31cc94030e0829fcac4aaea34495e)
* hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java
* hbase-common/src/test/java/org/apache/hadoop/hbase/TestKeyValue.java


> Wrong result when scaning meta with startRow
> --------------------------------------------
>
>                 Key: HBASE-11541
>                 URL: https://issues.apache.org/jira/browse/HBASE-11541
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Liu Shaohui
>            Assignee: Liu Shaohui
>            Priority: Minor
>             Fix For: 0.99.0, 0.98.5, 2.0.0
>
>         Attachments: HBASE-11541-trunk-v1.diff, HBASE-11541.patch, HBASE-11541.patch
>
>
> When we scan the meta with STARTROW optiion, wrong result may be returned.
> For exmaple: if there are two tables named "a" and "b" in hbase, when we scan the meta
with startrow = 'b', the region location of table "a" will be returned but we expect to get
the region location of table "b".
>  {code}
> > create 'a', {NAME => 'f'}
> > create 'b', {NAME => 'f'}
> > scan '.META.', {STARTROW => 'b', LIMIT => 1}
> a,,1405655897758.f8b547476b6dc80545e6413c31396, xxxx
> {code}
> The reason is the wrong assumption in MetaKeyComparator
> See: KeyValue.java#2011
> {code}
>       int leftDelimiter = getDelimiter(left, loffset, llength,
>           HRegionInfo.DELIMITER);
>       int rightDelimiter = getDelimiter(right, roffset, rlength,
>           HRegionInfo.DELIMITER);
>       if (leftDelimiter < 0 && rightDelimiter >= 0) {
>         // Nothing between .META. and regionid.  Its first key. 
>         return -1;
>       } else if (rightDelimiter < 0 && leftDelimiter >= 0) {
>         return 1;
>       } else if (leftDelimiter < 0 && rightDelimiter < 0) {
>         return 0;
>       }
> {code}
> It's a little troublesome to fix this problem for given a start row which contains more
than two "," for meta, it's not easy to extract the startKey of region.
> eg: STARTROW => 'aaa,bbb,ccc,xxx'.
> Comments and suggestions are welcomed. Thanks



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message