You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2012/10/02 18:10:44 UTC

svn commit: r1393004 - in /lucene/dev/branches/lucene4456/lucene: core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java

Author: mikemccand
Date: Tue Oct  2 16:10:43 2012
New Revision: 1393004

URL: http://svn.apache.org/viewvc?rev=1393004&view=rev
Log:
LUCENE-4456: print the diff when unref'd files are removed

Modified:
    lucene/dev/branches/lucene4456/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java
    lucene/dev/branches/lucene4456/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java

Modified: lucene/dev/branches/lucene4456/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4456/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java?rev=1393004&r1=1393003&r2=1393004&view=diff
==============================================================================
--- lucene/dev/branches/lucene4456/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java (original)
+++ lucene/dev/branches/lucene4456/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java Tue Oct  2 16:10:43 2012
@@ -341,6 +341,12 @@ public class TestIndexWriterWithThreads 
     }
     @Override
     public void eval(MockDirectoryWrapper dir)  throws IOException {
+
+      // Since we throw exc during abort, eg when IW is
+      // attempting to delete files, we will leave
+      // leftovers: 
+      dir.setAssertNoUnrefencedFilesOnClose(false);
+
       if (doFail) {
         StackTraceElement[] trace = new Exception().getStackTrace();
         boolean sawAbortOrFlushDoc = false;
@@ -357,8 +363,8 @@ public class TestIndexWriterWithThreads 
         if (sawAbortOrFlushDoc && !sawClose) {
           if (onlyOnce)
             doFail = false;
-          System.out.println(Thread.currentThread().getName() + ": now fail");
-          new Throwable().printStackTrace(System.out);
+          //System.out.println(Thread.currentThread().getName() + ": now fail");
+          //new Throwable().printStackTrace(System.out);
           throw new IOException("now failing on purpose");
         }
       }
@@ -405,6 +411,8 @@ public class TestIndexWriterWithThreads 
           if ("flush".equals(trace[i].getMethodName()) && "org.apache.lucene.index.DocFieldProcessor".equals(trace[i].getClassName())) {
             if (onlyOnce)
               doFail = false;
+            System.out.println("NOW FAIL");
+            new Throwable().printStackTrace(System.out);
             throw new IOException("now failing on purpose");
           }
         }

Modified: lucene/dev/branches/lucene4456/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4456/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java?rev=1393004&r1=1393003&r2=1393004&view=diff
==============================================================================
--- lucene/dev/branches/lucene4456/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java (original)
+++ lucene/dev/branches/lucene4456/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java Tue Oct  2 16:10:43 2012
@@ -590,8 +590,37 @@ public class MockDirectoryWrapper extend
           Arrays.sort(startFiles);
           Arrays.sort(endFiles);
 
+          Set<String> startSet = new HashSet<String>(Arrays.asList(startFiles));
+          Set<String> endSet = new HashSet<String>(Arrays.asList(endFiles));
+
           if (!Arrays.equals(startFiles, endFiles)) {
-            assert false : "unreferenced files: before delete:\n    " + Arrays.toString(startFiles) + "\n  after delete:\n    " + Arrays.toString(endFiles);
+            StringBuilder sb = new StringBuilder();
+            boolean printed = false;
+            for(String fileName : startFiles) {
+              if (!endSet.contains(fileName)) {
+                if (!printed) {
+                  sb.append("These files were deleted:\n");
+                  printed = true;
+                }
+                sb.append("  ");
+                sb.append(fileName);
+                sb.append('\n');
+              }
+            }
+
+            printed = false;
+            for(String fileName : endFiles) {
+              if (!startSet.contains(fileName)) {
+                if (!printed) {
+                  sb.append("These files were added (waaaat!):\n");
+                  printed = true;
+                }
+                sb.append("  ");
+                sb.append(fileName);
+                sb.append('\n');
+              }
+            }
+            assert false : "unreferenced files: before delete:\n    " + Arrays.toString(startFiles) + "\n  after delete:\n    " + Arrays.toString(endFiles) + "\n\n" + sb.toString();
           }
 
           DirectoryReader ir1 = DirectoryReader.open(this);