mirror of https://github.com/apache/lucene.git
LUCENE-8275: Fix BaseLockFactoryTestCase to step out on Windowns if pending files are found
The particular test here is #testStressLocks that has several protectesion against WindowsFS and special logic in the catch clause that steps out on fatal exceptions with pending deletes. Since we now check this consistently in the IW ctor we need to also skip this entire test if we are on windows and have pending deletes.
This commit is contained in:
parent
d53de2a385
commit
933d8a6995
|
@ -25,6 +25,7 @@ import org.apache.lucene.analysis.MockAnalyzer;
|
||||||
import org.apache.lucene.store.Directory;
|
import org.apache.lucene.store.Directory;
|
||||||
import org.apache.lucene.store.IOContext;
|
import org.apache.lucene.store.IOContext;
|
||||||
import org.apache.lucene.store.MockDirectoryWrapper;
|
import org.apache.lucene.store.MockDirectoryWrapper;
|
||||||
|
import org.apache.lucene.util.Constants;
|
||||||
import org.apache.lucene.util.LineFileDocs;
|
import org.apache.lucene.util.LineFileDocs;
|
||||||
import org.apache.lucene.util.LuceneTestCase.SuppressFileSystems;
|
import org.apache.lucene.util.LuceneTestCase.SuppressFileSystems;
|
||||||
import org.apache.lucene.util.LuceneTestCase;
|
import org.apache.lucene.util.LuceneTestCase;
|
||||||
|
@ -65,6 +66,10 @@ public class TestIndexWriterOutOfFileDescriptors extends LuceneTestCase {
|
||||||
if (ms instanceof ConcurrentMergeScheduler) {
|
if (ms instanceof ConcurrentMergeScheduler) {
|
||||||
((ConcurrentMergeScheduler) ms).setSuppressExceptions();
|
((ConcurrentMergeScheduler) ms).setSuppressExceptions();
|
||||||
}
|
}
|
||||||
|
if (Constants.WINDOWS && dir.checkPendingDeletions()) {
|
||||||
|
// if we are on windows and we have pending deletions we can't execute this test
|
||||||
|
break;
|
||||||
|
}
|
||||||
w = new IndexWriter(dir, iwc);
|
w = new IndexWriter(dir, iwc);
|
||||||
if (r != null && random().nextInt(5) == 3) {
|
if (r != null && random().nextInt(5) == 3) {
|
||||||
if (random().nextBoolean()) {
|
if (random().nextBoolean()) {
|
||||||
|
|
|
@ -173,9 +173,8 @@ public abstract class BaseLockFactoryTestCase extends LuceneTestCase {
|
||||||
writer.start();
|
writer.start();
|
||||||
searcher.start();
|
searcher.start();
|
||||||
|
|
||||||
while(writer.isAlive() || searcher.isAlive()) {
|
writer.join();
|
||||||
Thread.sleep(1000);
|
searcher.join();
|
||||||
}
|
|
||||||
|
|
||||||
assertTrue("IndexWriter hit unexpected exceptions", !writer.hitException);
|
assertTrue("IndexWriter hit unexpected exceptions", !writer.hitException);
|
||||||
assertTrue("IndexSearcher hit unexpected exceptions", !searcher.hitException);
|
assertTrue("IndexSearcher hit unexpected exceptions", !searcher.hitException);
|
||||||
|
@ -232,14 +231,20 @@ public abstract class BaseLockFactoryTestCase extends LuceneTestCase {
|
||||||
printStream.println("\nTEST: WriterThread iter=" + i);
|
printStream.println("\nTEST: WriterThread iter=" + i);
|
||||||
iwc.setOpenMode(OpenMode.APPEND);
|
iwc.setOpenMode(OpenMode.APPEND);
|
||||||
try {
|
try {
|
||||||
|
if (Constants.WINDOWS && dir.checkPendingDeletions()) {
|
||||||
|
// on windows we can potentially have pending deletes here if this happens we step out like in the catch clause
|
||||||
|
// tests using this also assumes no mock window FS
|
||||||
|
break;
|
||||||
|
}
|
||||||
writer = new IndexWriter(dir, iwc);
|
writer = new IndexWriter(dir, iwc);
|
||||||
|
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
if (Constants.WINDOWS && t instanceof AccessDeniedException) {
|
if (Constants.WINDOWS && t instanceof AccessDeniedException) {
|
||||||
// LUCENE-6684: suppress this: on Windows, a file in the curious "pending delete" state can
|
// LUCENE-6684: suppress this: on Windows, a file in the curious "pending delete" state can
|
||||||
// cause this exc on IW init, where one thread/process deleted an old
|
// cause this exc on IW init, where one thread/process deleted an old
|
||||||
// segments_N, but the delete hasn't finished yet because other threads/processes
|
// segments_N, but the delete hasn't finished yet because other threads/processes
|
||||||
// still have it open
|
// still have it open
|
||||||
printStream.println("TEST: AccessDeniedException on init witer");
|
printStream.println("TEST: AccessDeniedException on init writer");
|
||||||
t.printStackTrace(printStream);
|
t.printStackTrace(printStream);
|
||||||
} else {
|
} else {
|
||||||
hitException = true;
|
hitException = true;
|
||||||
|
@ -268,7 +273,6 @@ public abstract class BaseLockFactoryTestCase extends LuceneTestCase {
|
||||||
System.out.println(toString(baos));
|
System.out.println(toString(baos));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
writer = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue