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

Aleksandr Maksymenko commented on HBASE-13705:
----------------------------------------------

Seems that you are right. It's was my misunderstanding of how 
Collections.binarySearch works.
Sorry for your time, please close this issue.

> 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