You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Michael McCandless (JIRA)" <ji...@apache.org> on 2007/03/03 15:44:50 UTC

[jira] Updated: (LUCENE-820) SegmentReader.setNorm can fail to remove separate norms file, on Windows

     [ https://issues.apache.org/jira/browse/LUCENE-820?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael McCandless updated LUCENE-820:
--------------------------------------

    Attachment: LUCENE-820.patch

I've attached a patch that fixes this.

The fix is to close the IndexInput after we've cached the norms in the
in-memory byte array.  Once we've cached the norms, we never use that
IndexInput again (as far as I can tell?).  This is also nice because
it frees up file handles once norms are cached.

Changes:

  * Fixed TestMultiSearcher: it was closing a searcher and then
    continuing to use it.

  * Added unit test case showing this bug before the patch.

  * Improved MockRAMDirectory to "act like Windows" by refusing to
    delete or overwrite an open file.  I removed "final" from 2
    methods (deleteFile, openInput) of RAMDirectory for this.

  * Changed SegmentReader.getNorms to close the Norms after caching.


> SegmentReader.setNorm can fail to remove separate norms file, on Windows
> ------------------------------------------------------------------------
>
>                 Key: LUCENE-820
>                 URL: https://issues.apache.org/jira/browse/LUCENE-820
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: Index
>    Affects Versions: 2.1
>            Reporter: Michael McCandless
>         Assigned To: Michael McCandless
>            Priority: Minor
>             Fix For: 2.2
>
>         Attachments: LUCENE-820.patch
>
>
> While working through LUCENE-710 I hit this bug: on Windows
> only, when SegmentReader.setNorm is called, but separate norms
> (_X_N.sY) had already been previously saved, then, on closing the
> reader, we will write the next gen separate norm file correctly
> (_X_N+1.sY) but fail to delete the current one.
> It's quite minor because the next writer to touch the index will
> remove the stale file.
> This is because the Norm class still holds the IndexInput open when
> the reader commits.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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