You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2015/10/12 21:34:33 UTC

svn commit: r1708209 - in /lucene/dev/trunk/lucene/misc/src: java/org/apache/lucene/search/BlockJoinComparatorSource.java test/org/apache/lucene/index/TestBlockJoinSorter.java

Author: jpountz
Date: Mon Oct 12 19:34:33 2015
New Revision: 1708209

URL: http://svn.apache.org/viewvc?rev=1708209&view=rev
Log:
LUCENE-6836: Fix reader context management with block-join sorting.

Modified:
    lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/search/BlockJoinComparatorSource.java
    lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/index/TestBlockJoinSorter.java

Modified: lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/search/BlockJoinComparatorSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/search/BlockJoinComparatorSource.java?rev=1708209&r1=1708208&r2=1708209&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/search/BlockJoinComparatorSource.java (original)
+++ lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/search/BlockJoinComparatorSource.java Mon Oct 12 19:34:33 2015
@@ -20,6 +20,7 @@ package org.apache.lucene.search;
 import java.io.IOException;
 
 import org.apache.lucene.index.LeafReaderContext;
+import org.apache.lucene.index.ReaderUtil;
 import org.apache.lucene.index.SortingMergePolicy;
 import org.apache.lucene.util.BitSet;
 
@@ -118,7 +119,7 @@ public class BlockJoinComparatorSource e
         if (parentBits != null) {
           throw new IllegalStateException("This comparator can only be used on a single segment");
         }
-        IndexSearcher searcher = new IndexSearcher(context.reader());
+        IndexSearcher searcher = new IndexSearcher(ReaderUtil.getTopLevelContext(context));
         searcher.setQueryCache(null);
         final Weight weight = searcher.createNormalizedWeight(parentsFilter, false);
         final DocIdSetIterator parents = weight.scorer(context);

Modified: lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/index/TestBlockJoinSorter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/index/TestBlockJoinSorter.java?rev=1708209&r1=1708208&r2=1708209&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/index/TestBlockJoinSorter.java (original)
+++ lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/index/TestBlockJoinSorter.java Mon Oct 12 19:34:33 2015
@@ -41,7 +41,6 @@ import org.junit.Ignore;
 
 public class TestBlockJoinSorter extends LuceneTestCase {
 
-  @AwaitsFix(bugUrl="https://issues.apache.org/jira/browse/LUCENE-6836")
   public void test() throws IOException {
     final int numParents = atLeast(200);
     IndexWriterConfig cfg = newIndexWriterConfig(new MockAnalyzer(random()));
@@ -65,14 +64,17 @@ public class TestBlockJoinSorter extends
       writer.addDocuments(documents);
     }
     writer.forceMerge(1);
-    final DirectoryReader indexReader = writer.getReader();
+    IndexReader indexReader = writer.getReader();
     writer.close();
 
-    final LeafReader reader = getOnlySegmentReader(indexReader);
+    IndexSearcher searcher = newSearcher(indexReader);
+    indexReader = searcher.getIndexReader(); // newSearcher may have wrapped it
+    assertEquals(1, indexReader.leaves().size());
+    final LeafReader reader = indexReader.leaves().get(0).reader();
     final Query parentsFilter = new TermQuery(new Term("parent", "true"));
-    IndexSearcher searcher = newSearcher(reader);
+
     final Weight weight = searcher.createNormalizedWeight(parentsFilter, false);
-    final DocIdSetIterator parents = weight.scorer(reader.getContext());
+    final DocIdSetIterator parents = weight.scorer(indexReader.leaves().get(0));
     final BitSet parentBits = BitSet.of(parents, reader.maxDoc());
     final NumericDocValues parentValues = reader.getNumericDocValues("parent_val");
     final NumericDocValues childValues = reader.getNumericDocValues("child_val");