Description
When utilizing knn vector queries in Lucene v9 in a context that requires advanceShallow, it can break higher level logic, ending up causing infinite loops.
Specifically, if an upstream caller passes in NO_MORE_DOCS to bstractKnnVectorQuery.DocAndScoreQuery#advanceShallow it will blindly add context.docBase and execute a binary search, resulting in, potentially a doc ID other than NO_MORE_DOCS.
This issue appeared in a rather complex query mixing kNN results with required clauses in a ReqOptSumScorer
Version and environment details
Lucene v9
Bug does not exist in v10.
Description
When utilizing knn vector queries in Lucene v9 in a context that requires advanceShallow, it can break higher level logic, ending up causing infinite loops.
Specifically, if an upstream caller passes in
NO_MORE_DOCStobstractKnnVectorQuery.DocAndScoreQuery#advanceShallowit will blindly addcontext.docBaseand execute a binary search, resulting in, potentially a doc ID other thanNO_MORE_DOCS.This issue appeared in a rather complex query mixing kNN results with required clauses in a
ReqOptSumScorerVersion and environment details
Lucene v9
Bug does not exist in v10.