mirror of https://github.com/apache/lucene.git
LUCENE-2812: fix IndexReader.indexExists to return false when segments_N file cannot be read
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1045212 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
8535534a0d
commit
625f60388d
|
@ -835,13 +835,17 @@ public abstract class IndexReader implements Cloneable,Closeable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns <code>true</code> if an index exists at the specified directory.
|
* Returns <code>true</code> if an index exists at the specified directory.
|
||||||
* If the directory does not exist or if there is no index in it.
|
|
||||||
* @param directory the directory to check for an index
|
* @param directory the directory to check for an index
|
||||||
* @return <code>true</code> if an index exists; <code>false</code> otherwise
|
* @return <code>true</code> if an index exists; <code>false</code> otherwise
|
||||||
* @throws IOException if there is a problem with accessing the index
|
* @throws IOException if there is a problem with accessing the index
|
||||||
*/
|
*/
|
||||||
public static boolean indexExists(Directory directory) throws IOException {
|
public static boolean indexExists(Directory directory) throws IOException {
|
||||||
return SegmentInfos.getCurrentSegmentGeneration(directory) != -1;
|
try {
|
||||||
|
new SegmentInfos().read(directory);
|
||||||
|
return true;
|
||||||
|
} catch (IOException ioe) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns the number of documents in this index. */
|
/** Returns the number of documents in this index. */
|
||||||
|
|
|
@ -1851,4 +1851,15 @@ public class TestIndexReader extends LuceneTestCase
|
||||||
dir.close();
|
dir.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LUCENE-2812
|
||||||
|
public void testIndexExists() throws Exception {
|
||||||
|
Directory dir = newDirectory();
|
||||||
|
IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()));
|
||||||
|
writer.addDocument(new Document());
|
||||||
|
writer.prepareCommit();
|
||||||
|
assertFalse(IndexReader.indexExists(dir));
|
||||||
|
writer.close();
|
||||||
|
assertTrue(IndexReader.indexExists(dir));
|
||||||
|
dir.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue