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

Li Zhexi commented on PHOENIX-7666:
-----------------------------------

Hi [~tkhurana] 

I have met the same issue in branch-5.2.1 , and I tried mergeing the PR, it do 
not work.

In addition to your modification, I also modified 
phoenix-core-client/src/main/java/org/apache/phoenix/filter/SkipScanFilter.java 
and overrode the reset method. This error seems fixed.
| @Override| | |
| | | public void reset() {|
| | | // Clear the per-row hint map so that the filter can be safely reused|
| | | // across scanner instances (e.g., during index read-repair in|
| | | // GlobalIndexChecker where indexScan = new Scan(scan) shares the same|
| | | // filter object). Without this, nextCellHintMap retains stale hints|
| | | // from the previous scanner, causing "The next hint must come after|
| | | // previous hint" IllegalStateException.|
| | | nextCellHintMap.clear();|
| | | }|

 Hope this is helpful for your Jira.

> Index query failure with SkipScanFilter
> ---------------------------------------
>
>                 Key: PHOENIX-7666
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-7666
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 5.1.3, 5.2.1
>            Reporter: Tanuj Khurana
>            Assignee: Tanuj Khurana
>            Priority: Major
>             Fix For: 5.3.0, 5.2.2
>
>
> When the query is served by the index and the scan has a skipscan filter, the 
> query fails with the exception:
> {code:java}
> Caused by: java.lang.IllegalStateException: The next hint must come after 
> previous hint (prev=val1\x00val2d//LATEST_TIMESTAMP/Maximum/vlen=0/seqid=0, 
> next=val1\x00val2d//LATEST_TIMESTAMP/Maximum/vlen=0/seqid=0, 
> kv=val1\x00val2c\x00c/0:\x00\x00\x00\x00/1752538149585/Put/vlen=1/seqid=8) at 
> org.apache.phoenix.filter.SkipScanFilter.setNextCellHint(SkipScanFilter.java:204)
>     at 
> org.apache.phoenix.filter.SkipScanFilter.filterCell(SkipScanFilter.java:178) 
> at 
> org.apache.hadoop.hbase.filter.FilterListWithAND.filterCell(FilterListWithAND.java:199)
>       at 
> org.apache.hadoop.hbase.filter.FilterList.filterCell(FilterList.java:173)    
> at 
> org.apache.phoenix.filter.UnverifiedRowFilter.filterCell(UnverifiedRowFilter.java:90)
>         at 
> org.apache.phoenix.filter.PagingFilter.filterCell(PagingFilter.java:222)     
> at 
> org.apache.hadoop.hbase.regionserver.querymatcher.UserScanQueryMatcher.matchColumn(UserScanQueryMatcher.java:156)
>     at 
> org.apache.hadoop.hbase.regionserver.querymatcher.NormalUserScanQueryMatcher.match(NormalUserScanQueryMatcher.java:80)
>  {code}
> This is happening because when an index row is unverified, the read repair 
> process can in some cases rewind the scanner which violates the state of the 
> skipscan filter and the skipscan filter throws an IllegalStateException



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to