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

ramkrishna.s.vasudevan commented on HBASE-13705:
------------------------------------------------

I think I get you now. You mean that though the rowKey is greater than the 
start row, we assume that to be the startRow and we exclude it where as we 
should have included it as the rowKey is > than the startRow. 

> MultiRowRangeFilter seems to be working incorrect if 
> RowRange.startRowInclusive = false
> ---------------------------------------------------------------------------------------
>
>                 Key: HBASE-13705
>                 URL: https://issues.apache.org/jira/browse/HBASE-13705
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 1.1.0
>            Reporter: Aleksandr Maksymenko
>
> I've found the issue during code review, so I don't have tests and I even 
> didn't test this case manualy. So I'll try to describe it in words.
> Pre-condition: we're using scan with MultiRowRangeFilter with some RowRange's 
> with startRowInclusive = false. This means that we want to include all rows 
> that are strictly greater than startRow (and less then stopRow, but it 
> doesn't matter for now). 
> What happens in MultiRowRangeFilter.filterRowKey (worth case is described):
> 1. Line 91: Check if current range contains a row. Lets follow the case when 
> it doesn't.
> 2. Line 94: Search for the next RowRange in method getNextRangeIndex.
> 3. Line 238: We've found a RowRange, check if startRowInclusive == false and 
> set EXCLUSIVE = true. This variable indicates if next row should be excluded.
> 4. Line 105: Check if EXCLUSIVE == true, if so skip this row.
> The problem: we've skipped first row we got in this range, but we never 
> checked if this row is a RowRange.startRow . In distributed system may not 
> get RowRange.startRow on current instance, so we may exclude some another 
> row. Moreover, we may not have RowRange.startRow at all in the DB, we will 
> exclude some rows that are (possible) close to RowRange.startRow, but not 
> equals to it.



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

Reply via email to