LUCENE-1050 and LUCENE-1138 fixes for lock problem

git-svn-id: https://svn.apache.org/repos/asf/lucene/java/trunk@612868 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Grant Ingersoll 2008-01-17 17:00:43 +00:00
parent 0a54ca1920
commit ed9fdba601
3 changed files with 9 additions and 5 deletions

View File

@ -284,7 +284,9 @@ public class SpellChecker {
* @throws IOException * @throws IOException
*/ */
public void clearIndex() throws IOException { public void clearIndex() throws IOException {
IndexReader.unlock(spellIndex); if (IndexReader.isLocked(spellIndex)){
IndexReader.unlock(spellIndex);
}
IndexWriter writer = new IndexWriter(spellIndex, null, true); IndexWriter writer = new IndexWriter(spellIndex, null, true);
writer.close(); writer.close();
} }
@ -308,7 +310,9 @@ public class SpellChecker {
* @throws IOException * @throws IOException
*/ */
public void indexDictionary(Dictionary dict) throws IOException { public void indexDictionary(Dictionary dict) throws IOException {
IndexReader.unlock(spellIndex); if (IndexReader.isLocked(spellIndex)){
IndexReader.unlock(spellIndex);
}
IndexWriter writer = new IndexWriter(spellIndex, new WhitespaceAnalyzer(), IndexWriter writer = new IndexWriter(spellIndex, new WhitespaceAnalyzer(),
!IndexReader.indexExists(spellIndex)); !IndexReader.indexExists(spellIndex));
writer.setMergeFactor(300); writer.setMergeFactor(300);

View File

@ -145,7 +145,7 @@ class SimpleFSLock extends Lock {
} }
public void release() throws LockReleaseFailedException { public void release() throws LockReleaseFailedException {
if (!lockFile.delete()) if (lockFile.exists() && !lockFile.delete())
throw new LockReleaseFailedException("failed to delete " + lockFile); throw new LockReleaseFailedException("failed to delete " + lockFile);
} }

View File

@ -190,9 +190,9 @@ public class TestLockFactory extends LuceneTestCase {
if (writer2 != null) { if (writer2 != null) {
try { try {
writer2.close(); writer2.close();
fail("writer2.close() should have hit LockReleaseFailedException");
} catch (LockReleaseFailedException e) {
// expected // expected
} catch (LockReleaseFailedException e) {
fail("writer2.close() should not have hit LockReleaseFailedException");
} }
} }