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

Rajeshbabu Chintaguntla commented on PHOENIX-2470:
--------------------------------------------------

This seems fine to me [~jamestaylor]. Or else the other approach is that in  
postScannerNext hook we need to check the row key more than the stop row or not 
if not we can skip scanning for local indexes(For other things it won't happen 
any way) but that still have overhead of creating scanners. [~ankit.singhal] 
can you please rebase the patch.

> Skip overlapped scan left after StaleRegionBoundaryCacheException
> -----------------------------------------------------------------
>
>                 Key: PHOENIX-2470
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-2470
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Ankit Singhal
>            Assignee: Ankit Singhal
>             Fix For: 4.7.0
>
>         Attachments: PHOENIX-2470.patch
>
>
> We should skip the stale scanners because of two reasons:-
> 1. For local indexing , they can generate duplicate result if the compaction 
> didn't complete for the merged region.
> 2. Stale scanners which may result empty but may impact performance.
> For eg:- skipping scanners which has overlap with the previous succesfull 
> scanner
> In BaseResultIterators.java 
> {code}
> +                        if (isLocalIndex && previousScan != null
> +                                && ((!isReverse && 
> Bytes.compareTo(scanPair.getFirst().getStartRow(),
> +                                        previousScan.getStopRow()) < 0)
> +                                || (isReverse && 
> Bytes.compareTo(scanPair.getFirst().getStartRow(),
> +                                        previousScan.getStopRow()) > 0)
> +                                || 
> (scanPair.getFirst().getAttribute(EXPECTED_UPPER_REGION_KEY) != null
> +                                        && 
> previousScan.getAttribute(EXPECTED_UPPER_REGION_KEY) != null
> +                                        && 
> Bytes.compareTo(scanPair.getFirst().getAttribute(EXPECTED_UPPER_REGION_KEY),
> +                                                
> previousScan.getAttribute(EXPECTED_UPPER_REGION_KEY)) == 0))) {
> +
> +                            continue;
>                          }
> {code}



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

Reply via email to