You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "i30817 (JIRA)" <ji...@apache.org> on 2013/02/07 13:05:12 UTC

[jira] [Created] (LUCENE-4760) Weird IndexWriter.close() usage

i30817 created LUCENE-4760:
------------------------------

             Summary: Weird IndexWriter.close() usage
                 Key: LUCENE-4760
                 URL: https://issues.apache.org/jira/browse/LUCENE-4760
             Project: Lucene - Core
          Issue Type: Improvement
    Affects Versions: 4.1
            Reporter: i30817
            Priority: Minor


I'm using IndexWriter on such a way that it can be interrupted, since the streams i'm using to output to file can be interrupted. So far so good, but what i'm finding strange is the (only) way i've found to prevent the file lock being held afterwards.

Normally i'd do a try / catch / finally block where the finally would close() and handle exceptions from the close. However, IndexWriter "close()" is more like a buffered commit, where many exceptions can occur, so i left it on the main part of the code.

try{... index.close(); } catch { /*log*/ } finally { 
                if (IndexWriter.isLocked(cacheDir)) {
                    IndexWriter.unlock(cacheDir);
                }
}

Didn't work. The lock couldn't be unlocked (always) if the stream was interrupted

So in desperation, i tried to be more literal in my interpretation of the IndexWriter.close() javadoc and tried
        try {
            ...
            indexWriter.close();
        } catch (IOException ex) {
            try {
                indexWriter.close();
            } finally {
                if (IndexWriter.isLocked(cacheDir)) {
                    IndexWriter.unlock(cacheDir);
                }
            }
            throw ex;
        } finally {
            ...
        }

This worked (the lock was always released if a additional close() was invoked in a situation where the lock would be held before trying to unlock it), but i find it really counter-intuitive, and would wish for at least additional javadoc attention, or a redesign on a major API revision.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org