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

[lucene-solr] 01/02: LUCENE-9443: UnifiedHighlighter shouldn't close reader (#1706)

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

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

commit d822ab332ac89acaeb63cc81b4577ffa374281bd
Author: David Smiley <ds...@apache.org>
AuthorDate: Wed Jul 29 17:56:24 2020 -0400

    LUCENE-9443: UnifiedHighlighter shouldn't close reader (#1706)
    
    A regression from 8.6.  Don't close the underlying IndexReader.
    
    (cherry picked from commit 7d5b61797397fd785c8cc33b2367038d89ace5a9)
---
 lucene/CHANGES.txt                                                 | 7 +++++++
 .../org/apache/lucene/search/uhighlight/UnifiedHighlighter.java    | 5 ++---
 .../lucene/search/uhighlight/TestUnifiedHighlighterTermVec.java    | 1 +
 3 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 352810c..dd42009 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -57,6 +57,13 @@ Other
 ---------------------
 (No changes)
 
+======================= Lucene 8.6.1 =======================
+
+Bug Fixes
+---------------------
+* LUCENE-9443: The UnifiedHighlighter was closing the underlying reader when there were multiple term-vector fields.
+  This was a regression in 8.6.0.  (David Smiley, Chris Beer)
+
 ======================= Lucene 8.6.0 =======================
 
 API Changes
diff --git a/lucene/highlighter/src/java/org/apache/lucene/search/uhighlight/UnifiedHighlighter.java b/lucene/highlighter/src/java/org/apache/lucene/search/uhighlight/UnifiedHighlighter.java
index abf8bc6..2e6393c 100644
--- a/lucene/highlighter/src/java/org/apache/lucene/search/uhighlight/UnifiedHighlighter.java
+++ b/lucene/highlighter/src/java/org/apache/lucene/search/uhighlight/UnifiedHighlighter.java
@@ -645,7 +645,7 @@ public class UnifiedHighlighter {
 
       batchDocIdx += fieldValsByDoc.size();
     }
-    IOUtils.close(indexReaderWithTermVecCache);
+    IOUtils.close(indexReaderWithTermVecCache); // FYI won't close underlying reader
     assert docIdIter.docID() == DocIdSetIterator.NO_MORE_DOCS
         || docIdIter.nextDoc() == DocIdSetIterator.NO_MORE_DOCS;
 
@@ -1088,8 +1088,7 @@ public class UnifiedHighlighter {
           .toArray(LeafReader[]::new);
       return new BaseCompositeReader<IndexReader>(leafReaders) {
         @Override
-        protected void doClose() throws IOException {
-          reader.close();
+        protected void doClose() { // don't close the underlying reader
         }
 
         @Override
diff --git a/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/TestUnifiedHighlighterTermVec.java b/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/TestUnifiedHighlighterTermVec.java
index b2319d1..f929f20 100644
--- a/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/TestUnifiedHighlighterTermVec.java
+++ b/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/TestUnifiedHighlighterTermVec.java
@@ -120,6 +120,7 @@ public class TestUnifiedHighlighterTermVec extends LuceneTestCase {
       assertArrayEquals(expectedSnippetsByDoc, fieldToSnippets.get(field));
     }
 
+    ir.document(0); // ensure this works because the ir hasn't been closed
     ir.close();
   }