Index: lucene/src/test/org/apache/lucene/index/TestFilterIndexReader.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestFilterIndexReader.java (revision 1036589) +++ lucene/src/test/org/apache/lucene/index/TestFilterIndexReader.java (working copy) @@ -149,7 +149,7 @@ //IndexReader reader = new TestReader(IndexReader.open(directory, true)); Directory target = newDirectory(); writer = new IndexWriter(target, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer())); - IndexReader reader = new TestReader(IndexReader.open(directory, true)); + IndexReader reader = new TestReader(SlowMultiReaderWrapper.wrap(IndexReader.open(directory, true))); writer.addIndexes(reader); writer.close(); reader.close(); Index: lucene/src/java/org/apache/lucene/index/FilterIndexReader.java =================================================================== --- lucene/src/java/org/apache/lucene/index/FilterIndexReader.java (revision 1036589) +++ lucene/src/java/org/apache/lucene/index/FilterIndexReader.java (working copy) @@ -279,7 +279,7 @@ @Override public Bits getDeletedDocs() { - return MultiFields.getDeletedDocs(in); + return in.getDeletedDocs(); } @Override @@ -415,12 +415,12 @@ @Override public IndexReader[] getSequentialSubReaders() { - return null; + return in.getSequentialSubReaders(); } @Override public Fields fields() throws IOException { - return MultiFields.getFields(in); + return in.fields(); } /** If the subclass of FilteredIndexReader modifies the Index: lucene/src/java/org/apache/lucene/index/SlowMultiReaderWrapper.java =================================================================== --- lucene/src/java/org/apache/lucene/index/SlowMultiReaderWrapper.java (revision 1036589) +++ lucene/src/java/org/apache/lucene/index/SlowMultiReaderWrapper.java (working copy) @@ -48,7 +48,7 @@ * yourself.

*/ -public final class SlowMultiReaderWrapper extends FilterIndexReader { +public class SlowMultiReaderWrapper extends FilterIndexReader { /** This method may return the reader back, if the * incoming reader is already atomic. */ public static IndexReader wrap(IndexReader reader) throws IOException { @@ -64,7 +64,7 @@ } } - private SlowMultiReaderWrapper(IndexReader other) throws IOException { + protected SlowMultiReaderWrapper(IndexReader other) { super(other); } @@ -82,4 +82,9 @@ public void doClose() throws IOException { throw new UnsupportedOperationException("please call close on the original reader instead"); } + + @Override + public IndexReader[] getSequentialSubReaders() { + return null; + } } Index: lucene/contrib/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java =================================================================== --- lucene/contrib/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java (revision 1036589) +++ lucene/contrib/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java (working copy) @@ -173,7 +173,7 @@ * Instead, deletions are buffered in a bitset and overlaid with the original * list of deletions. */ - public static class FakeDeleteIndexReader extends FilterIndexReader { + public static class FakeDeleteIndexReader extends SlowMultiReaderWrapper { // TODO: switch to flex api, here OpenBitSet dels;