You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/09/10 20:09:57 UTC

[lucene-solr] branch branch_8x updated: LUCENE-9501: Fix invariant violation in IndexSortSortedNumericDocValuesRangeQuery. (#1833)

This is an automated email from the ASF dual-hosted git repository.

mayya pushed a commit to branch branch_8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/branch_8x by this push:
     new a1d460b  LUCENE-9501: Fix invariant violation in IndexSortSortedNumericDocValuesRangeQuery. (#1833)
a1d460b is described below

commit a1d460b27c525a526ff0928cb2454571c1fbf91f
Author: Julie Tibshirani <ju...@elastic.co>
AuthorDate: Thu Sep 10 12:02:18 2020 -0700

    LUCENE-9501: Fix invariant violation in IndexSortSortedNumericDocValuesRangeQuery. (#1833)
    
    Previously the DocIdSetIterator returned an old value for docID advance
    returned NO_MORE_DOCS. This violates the DocIdSetIterator contract and made it
    possiblefor the iterator's advance method to be called even after it was
    already exhausted.
---
 lucene/CHANGES.txt                                                    | 3 +++
 .../lucene/search/IndexSortSortedNumericDocValuesRangeQuery.java      | 4 ++--
 .../lucene/search/TestIndexSortSortedNumericDocValuesRangeQuery.java  | 2 +-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 400c00a..b110f3f 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -69,6 +69,9 @@ Bug Fixes
   already exists instead of opening an IndexInput on the file which might throw a AccessDeniedException
   in some Directory implementations. (Simon Willnauer)
 
+* LUCENE-9501: Fix a bug in IndexSortSortedNumericDocValuesRangeQuery where it could violate the
+  DocIdSetIterator contract. (Julie Tibshirani)
+
 Documentation
 ---------------------
 
diff --git a/lucene/sandbox/src/java/org/apache/lucene/search/IndexSortSortedNumericDocValuesRangeQuery.java b/lucene/sandbox/src/java/org/apache/lucene/search/IndexSortSortedNumericDocValuesRangeQuery.java
index 9e22117..df574c1 100644
--- a/lucene/sandbox/src/java/org/apache/lucene/search/IndexSortSortedNumericDocValuesRangeQuery.java
+++ b/lucene/sandbox/src/java/org/apache/lucene/search/IndexSortSortedNumericDocValuesRangeQuery.java
@@ -287,10 +287,10 @@ public class IndexSortSortedNumericDocValuesRangeQuery extends Query {
       int result = delegate.advance(target);
       if (result < lastDoc) {
         docID = result;
-        return docID;
       } else {
-        return NO_MORE_DOCS;
+        docID = NO_MORE_DOCS;
       }
+      return docID;
     }
 
     @Override
diff --git a/lucene/sandbox/src/test/org/apache/lucene/search/TestIndexSortSortedNumericDocValuesRangeQuery.java b/lucene/sandbox/src/test/org/apache/lucene/search/TestIndexSortSortedNumericDocValuesRangeQuery.java
index da6bcf1b..97319db 100644
--- a/lucene/sandbox/src/test/org/apache/lucene/search/TestIndexSortSortedNumericDocValuesRangeQuery.java
+++ b/lucene/sandbox/src/test/org/apache/lucene/search/TestIndexSortSortedNumericDocValuesRangeQuery.java
@@ -65,7 +65,7 @@ public class TestIndexSortSortedNumericDocValuesRangeQuery extends LuceneTestCas
         iw.deleteDocuments(LongPoint.newRangeQuery("idx", 0L, 10L));
       }
       final IndexReader reader = iw.getReader();
-      final IndexSearcher searcher = newSearcher(reader, false);
+      final IndexSearcher searcher = newSearcher(reader);
       iw.close();
 
       for (int i = 0; i < 100; ++i) {