Exception in deleteDocument, undeleteAll or setNorm in IndexReader can fail to 
release write lock on close
----------------------------------------------------------------------------------------------------------

                 Key: LUCENE-768
                 URL: https://issues.apache.org/jira/browse/LUCENE-768
             Project: Lucene - Java
          Issue Type: Bug
          Components: Index
    Affects Versions: 2.0.0, 1.9, 2.0.1, 2.1
            Reporter: Michael McCandless
         Assigned To: Michael McCandless
            Priority: Minor
             Fix For: 2.1


I hit this while working on LUCENE-140

We have 3 cases in the IndexReader methods above where we have this pattern:

  if (directoryOwner) acquireWriteLock();
  doSomething();
  hasChanges = true;

The problem is if you hit an exception in doSomething(), and hasChanges was not 
already true, then hasChanges will not have been set to true yet the write lock 
is held.  If you then try to close the reader without making any other changes, 
then the write lock is not released because in IndexReader.close() (well, in 
commit()) we only release write lock if hasChanges is true.

I think the simple fix is to swap the order of hasChanges = true and 
doSomething().  I already fixed one case of this under LUCENE-140 commit 
yesterday; I will fix the other two under this issue.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://issues.apache.org/jira/secure/Administrators.jspa
-
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