You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@phoenix.apache.org by "Li Zhexi (Jira)" <ji...@apache.org> on 2026/09/10 07:57:00 UTC
[jira] [Comment Edited] (PHOENIX-7666) Index query failure with SkipScanFilter
[ https://issues.apache.org/jira/browse/PHOENIX-7666?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18113721#comment-18113721 ]
Li Zhexi edited comment on PHOENIX-7666 at 9/10/26 7:56 AM:
------------------------------------------------------------
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.
was (Author: li zhexi):
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)