You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2012/01/30 15:56:03 UTC

svn commit: r1237692 - in /lucene/dev/branches/lucene2858: lucene/src/java/org/apache/lucene/index/ lucene/src/test/org/apache/lucene/index/ modules/facet/src/test/org/apache/lucene/facet/index/

Author: uschindler
Date: Mon Jan 30 14:56:02 2012
New Revision: 1237692

URL: http://svn.apache.org/viewvc?rev=1237692&view=rev
Log:
LUCENE-2858: Add a workaround for the broken PayloadProcessorProvider API that behaves like before our change (IR.directory() threw UOE for all non-directory based readers). I will open an issue to make PayloadProcessorProvider to get an AtomicReader instance as selection criteria for the processor

Modified:
    lucene/dev/branches/lucene2858/lucene/src/java/org/apache/lucene/index/SegmentMerger.java
    lucene/dev/branches/lucene2858/lucene/src/test/org/apache/lucene/index/TestPayloadProcessorProvider.java
    lucene/dev/branches/lucene2858/modules/facet/src/test/org/apache/lucene/facet/index/FacetsPayloadProcessorProviderTest.java

Modified: lucene/dev/branches/lucene2858/lucene/src/java/org/apache/lucene/index/SegmentMerger.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2858/lucene/src/java/org/apache/lucene/index/SegmentMerger.java?rev=1237692&r1=1237691&r2=1237692&view=diff
==============================================================================
--- lucene/dev/branches/lucene2858/lucene/src/java/org/apache/lucene/index/SegmentMerger.java (original)
+++ lucene/dev/branches/lucene2858/lucene/src/java/org/apache/lucene/index/SegmentMerger.java Mon Jan 30 14:56:02 2012
@@ -323,9 +323,12 @@ final class SegmentMerger {
       docBase += docCount;
 
       if (mergeState.payloadProcessorProvider != null) {
-        // nocommit: this does not work anymore as SR/AtomicIndexReader does not know the directory anymore:
-        // mergeState.dirPayloadProcessor[i] = mergeState.payloadProcessorProvider.getDirProcessor(reader.reader.directory());
-        throw new UnsupportedOperationException("PayloadProcessorProvider is not supported at the moment :(");
+        // TODO: the PayloadProcessorProvider should take AtomicReader as parameter
+        // and find out by itself if it can provide a processor:
+        if (!(reader.reader instanceof SegmentReader))
+          throw new UnsupportedOperationException("Payload processing currently requires exclusively SegmentReaders to be merged.");
+        final Directory dir = ((SegmentReader) reader.reader).directory();
+        mergeState.dirPayloadProcessor[i] = mergeState.payloadProcessorProvider.getDirProcessor(dir);
       }
 
       i++;

Modified: lucene/dev/branches/lucene2858/lucene/src/test/org/apache/lucene/index/TestPayloadProcessorProvider.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2858/lucene/src/test/org/apache/lucene/index/TestPayloadProcessorProvider.java?rev=1237692&r1=1237691&r2=1237692&view=diff
==============================================================================
--- lucene/dev/branches/lucene2858/lucene/src/test/org/apache/lucene/index/TestPayloadProcessorProvider.java (original)
+++ lucene/dev/branches/lucene2858/lucene/src/test/org/apache/lucene/index/TestPayloadProcessorProvider.java Mon Jan 30 14:56:02 2012
@@ -37,7 +37,6 @@ import org.apache.lucene.store.Directory
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
 import org.junit.Test;
-import org.junit.Ignore;
 
 public class TestPayloadProcessorProvider extends LuceneTestCase {
 
@@ -215,8 +214,6 @@ public class TestPayloadProcessorProvide
     dir.close();
   }
 
-  @Ignore("This test does not work, as PerDirPayloadProcessor is currently broken (see nocommit in SegmentMerger): "+
-      "SegmentReader/AtomicReader does not know its directory. This is broken, it should be a PayLoadProcessorProvider per AtomicReader!")
   @Test
   public void testAddIndexes() throws Exception {
     // addIndexes - single commit in each
@@ -226,8 +223,6 @@ public class TestPayloadProcessorProvide
     doTest(random, true, 0, true);
   }
 
-  @Ignore("This test does not work, as PerDirPayloadProcessor is currently broken (see nocommit in SegmentMerger): "+
-      "SegmentReader/AtomicReader does not know its directory. This is broken, it should be a PayLoadProcessorProvider per AtomicReader!")
   @Test
   public void testAddIndexesIntoExisting() throws Exception {
     // addIndexes - single commit in each
@@ -237,8 +232,6 @@ public class TestPayloadProcessorProvide
     doTest(random, false, NUM_DOCS, true);
   }
 
-  @Ignore("This test does not work, as PerDirPayloadProcessor is currently broken (see nocommit in SegmentMerger): "+
-      "SegmentReader/AtomicReader does not know its directory. This is broken, it should be a PayLoadProcessorProvider per AtomicReader!")
   @Test
   public void testRegularMerges() throws Exception {
     Directory dir = newDirectory();

Modified: lucene/dev/branches/lucene2858/modules/facet/src/test/org/apache/lucene/facet/index/FacetsPayloadProcessorProviderTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2858/modules/facet/src/test/org/apache/lucene/facet/index/FacetsPayloadProcessorProviderTest.java?rev=1237692&r1=1237691&r2=1237692&view=diff
==============================================================================
--- lucene/dev/branches/lucene2858/modules/facet/src/test/org/apache/lucene/facet/index/FacetsPayloadProcessorProviderTest.java (original)
+++ lucene/dev/branches/lucene2858/modules/facet/src/test/org/apache/lucene/facet/index/FacetsPayloadProcessorProviderTest.java Mon Jan 30 14:56:02 2012
@@ -7,13 +7,12 @@ import java.util.List;
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.document.Document;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.store.Directory;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import org.apache.lucene.util.LuceneTestCase;
@@ -48,8 +47,6 @@ public class FacetsPayloadProcessorProvi
   
   private static final int NUM_DOCS = 100;
   
-  @Ignore("This test does not work, as PerDirPayloadProcessor is currently broken (see nocommit in SegmentMerger): "+
-      "SegmentReader/AtomicReader does not know its directory. This is broken, it should be a PayLoadProcessorProvider per AtomicReader!")
   @Test
   public void testTaxonomyMergeUtils() throws Exception {
     Directory dir = newDirectory();
@@ -70,7 +67,7 @@ public class FacetsPayloadProcessorProvi
   }
 
   private void verifyResults(Directory dir, Directory taxDir) throws IOException {
-    IndexReader reader1 = IndexReader.open(dir);
+    DirectoryReader reader1 = DirectoryReader.open(dir);
     DirectoryTaxonomyReader taxReader = new DirectoryTaxonomyReader(taxDir);
     IndexSearcher searcher = newSearcher(reader1);
     FacetSearchParams fsp = new FacetSearchParams();