[ http://issues.apache.org/jira/browse/LUCENE-479?page=all ] Doug Cutting resolved LUCENE-479: ---------------------------------
Fix Version: 1.9 Resolution: Fixed I committed this. Thanks! > MultiReader.numDocs incorrect after undeleteAll > ----------------------------------------------- > > Key: LUCENE-479 > URL: http://issues.apache.org/jira/browse/LUCENE-479 > Project: Lucene - Java > Type: Bug > Components: Index > Versions: CVS Nightly - Specify date in submission > Reporter: Robert Kirchgessner (JIRA) > Priority: Minor > Fix For: 1.9 > Attachments: undeleteAll.patch > > Calling MultiReader.undeleteAll does not clear cached numDocs value. So the > subsequent numDocs() call returns a wrong value if there were deleted > documents in the index. Following patch fixes the bug and adds a test showing > the issue. > Index: src/test/org/apache/lucene/index/TestMultiReader.java > =================================================================== > --- src/test/org/apache/lucene/index/TestMultiReader.java (revision > 354923) > +++ src/test/org/apache/lucene/index/TestMultiReader.java (working copy) > @@ -69,6 +69,18 @@ > assertTrue(vector != null); > TestSegmentReader.checkNorms(reader); > } > + > + public void testUndeleteAll() throws IOException { > + sis.read(dir); > + MultiReader reader = new MultiReader(dir, sis, false, readers); > + assertTrue(reader != null); > + assertEquals( 2, reader.numDocs() ); > + reader.delete(0); > + assertEquals( 1, reader.numDocs() ); > + reader.undeleteAll(); > + assertEquals( 2, reader.numDocs() ); > + } > + > public void testTermVectors() { > MultiReader reader = new MultiReader(dir, sis, false, readers); > Index: src/java/org/apache/lucene/index/MultiReader.java > =================================================================== > --- src/java/org/apache/lucene/index/MultiReader.java (revision 354923) > +++ src/java/org/apache/lucene/index/MultiReader.java (working copy) > @@ -122,6 +122,7 @@ > for (int i = 0; i < subReaders.length; i++) > subReaders[i].undeleteAll(); > hasDeletions = false; > + numDocs = -1; // invalidate cache > } > private int readerIndex(int n) { // find reader for doc n: -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]