You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Anoop Sam John (JIRA)" <ji...@apache.org> on 2016/02/01 07:14:39 UTC

[jira] [Commented] (HBASE-15097) When the scan operation covered two regions,sometimes the final results have duplicated rows.

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

Anoop Sam John commented on HBASE-15097:
----------------------------------------

IMHO we should not be adding this kind of extra checks but should fix the actual issue.. (As u hinted might be with split regions read path)


> When the scan operation covered two regions,sometimes the final results have duplicated rows.
> ---------------------------------------------------------------------------------------------
>
>                 Key: HBASE-15097
>                 URL: https://issues.apache.org/jira/browse/HBASE-15097
>             Project: HBase
>          Issue Type: Bug
>          Components: regionserver
>    Affects Versions: 1.1.2
>         Environment: centos 6.5
> hbase 1.1.2 
>            Reporter: chenrongwei
>            Assignee: chenrongwei
>         Attachments: HBASE-15097-v001.patch, HBASE-15097-v002.patch, HBASE-15097-v003.patch, HBASE-15097-v004.patch, output.log, rowkey.txt, snapshot2016-01-13 pm 8.42.37.png
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> When the scan operationā€˜s start key and end key covered two regions,the first region returned the rows which were beyond of its' end key.So,this finally leads to duplicated rows in the results.
> To avoid this problem,we should add a judgment before setting the variable "stopRow" in the class of HRegion,like follow:
>             if (Bytes.equals(scan.getStopRow(), HConstants.EMPTY_END_ROW) && !scan.isGetScan()) {
>                 this.stopRow = null;
>             } else {
>                 if (Bytes.compareTo(scan.getStopRow(), this.getRegionInfo().getEndKey()) >= 0) {
>                     this.stopRow = this.getRegionInfo().getEndKey();
>                 } else {
>                     this.stopRow = scan.getStopRow();
>                 }
>             }



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)