[ 
https://issues.apache.org/jira/browse/LUCENE-3139?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13038948#comment-13038948
 ] 

Shai Erera commented on LUCENE-3139:
------------------------------------

I think I've found the problem - MockIndexOutputWrapper did not close delegate 
if dir.maybeThrowEx actually threw an exception. Here's a patch that fixes it:

{code}
Index: 
lucene/src/test-framework/org/apache/lucene/store/MockIndexOutputWrapper.java
===================================================================
--- 
lucene/src/test-framework/org/apache/lucene/store/MockIndexOutputWrapper.java   
    (revision 1127062)
+++ 
lucene/src/test-framework/org/apache/lucene/store/MockIndexOutputWrapper.java   
    (working copy)
@@ -45,20 +45,23 @@

   @Override
   public void close() throws IOException {
-    dir.maybeThrowDeterministicException();
-    delegate.close();
-    if (dir.trackDiskUsage) {
-      // Now compute actual disk usage & track the maxUsedSize
-      // in the MockDirectoryWrapper:
-      long size = dir.getRecomputedActualSizeInBytes();
-      if (size > dir.maxUsedSize) {
-        dir.maxUsedSize = size;
+    try {
+      dir.maybeThrowDeterministicException();
+    } finally {
+      delegate.close();
+      if (dir.trackDiskUsage) {
+        // Now compute actual disk usage & track the maxUsedSize
+        // in the MockDirectoryWrapper:
+        long size = dir.getRecomputedActualSizeInBytes();
+        if (size > dir.maxUsedSize) {
+          dir.maxUsedSize = size;
+        }
       }
+      synchronized(dir) {
+        dir.openFileHandles.remove(this);
+        dir.openFilesForWrite.remove(name);
+      }
     }
-    synchronized(dir) {
-      dir.openFileHandles.remove(this);
-      dir.openFilesForWrite.remove(name);
-    }
   }

   @Override
{code}

Maybe we solve it by moving delegate.close() before dir.maybeThrow, instead of 
the try-finally?

> LuceneTestCase.afterClass does not print enough information if a 
> temp-test-dir fails to delete
> ----------------------------------------------------------------------------------------------
>
>                 Key: LUCENE-3139
>                 URL: https://issues.apache.org/jira/browse/LUCENE-3139
>             Project: Lucene - Java
>          Issue Type: Test
>          Components: general/test
>            Reporter: Shai Erera
>            Priority: Minor
>             Fix For: 3.2, 4.0
>
>         Attachments: LUCENE-3139.patch, LUCENE-3139.patch
>
>
> I've hit an exception from LTC.afterClass when _TestUtil.rmDir failed (on 
> write.lock, as if some test did not release resources). However, I had no 
> idea which test caused that (i.e. opened the temp directory and did not 
> release resources).
> I think we should do the following:
> * Track in LTC a map from dirName -> StackTraceElement
> * In afterClass if _TestUtil.rmDir fails, print the STE of that particular 
> dir, so we know where was this directory created from
> * Make tempDirs private and create accessor method, so that we control the 
> inserts to this map (today the Set is updated by LTC, _TestUtils and 
> TestBackwards !)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to