You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2012/03/21 16:22:12 UTC

svn commit: r1303440 - in /lucene/dev/branches/branch_3x: ./ lucene/ lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java

Author: rmuir
Date: Wed Mar 21 15:22:12 2012
New Revision: 1303440

URL: http://svn.apache.org/viewvc?rev=1303440&view=rev
Log:
LUCENE-2899: don't rely upon DirectoryReader.indexExists to determine if we should checkIndex

Modified:
    lucene/dev/branches/branch_3x/   (props changed)
    lucene/dev/branches/branch_3x/lucene/   (props changed)
    lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java

Modified: lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java?rev=1303440&r1=1303439&r2=1303440&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java (original)
+++ lucene/dev/branches/branch_3x/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java Wed Mar 21 15:22:12 2012
@@ -552,7 +552,7 @@ public class MockDirectoryWrapper extend
     }
     open = false;
     if (checkIndexOnClose) {
-      if (IndexReader.indexExists(this)) {
+      if (indexPossiblyExists(this)) {
         if (LuceneTestCase.VERBOSE) {
           System.out.println("\nNOTE: MockDirectoryWrapper: now crash");
         }
@@ -588,6 +588,26 @@ public class MockDirectoryWrapper extend
     }
     delegate.close();
   }
+  
+  /** don't rely upon DirectoryReader.fileExists to determine if we should
+   *  checkIndex() or not. It might mask real problems, where we silently
+   *  don't checkindex at all. instead we look for a segments file.
+   */
+  private boolean indexPossiblyExists(Directory d) throws IOException {
+    String files[];
+    try {
+      files = d.listAll();
+    } catch (IOException ex) {
+      // this means directory doesn't exist, which is ok. return false
+      return false;
+    }
+    for (String f : files) {
+      if (f.startsWith("segments_")) {
+        return true;
+      }
+    }
+    return false;
+  }
 
   synchronized void removeOpenFile(Closeable c, String name) {
     Integer v = openFiles.get(name);