lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Doug Cutting <>
Subject Re: Potential Segment corruption
Date Thu, 26 May 2005 19:37:38 GMT
Arvind Srinivasan wrote:
> The patch on the follow up mail does look good. However, I have additional
> concerns:
> (a) deleteFile call may fail. eg. File is left open from the previous exception.
> This makes me believe the ideal scenario is to not to reuse the segment name
> once the newSegment call issues one. I strongly recommend this for 2.0.

I don't think this is possible.  When a JVM process exits, the OS closes 
all files it had open.  So the file can only still be open if the JVM 
that failed is still running.  All files opened while indexing are 
closed in a finally block.  So, if the JVM is still running and the file 
is open then it is still working on that segment and has not yet failed. 
  No other JVM should ever open these segment files since they were 
never named in the 'segments' file.

> (b)  We should add a comment on Directory interface, so that people who implement
> their own directory do not run into this issue and for that reason, I like 
> RandomAccessFile.setLength(0). However, since the code currently calls createFile 
> from many locations, we could add a comment something like this:
> ---
>  /** Creates a new, empty file in the directory with the given name.
>      Returns a stream writing this file. 
>      Ensure the OutputStream points to 0 byte length file.
>   */
>   public abstract OutputStream createFile(String name)
>        throws IOException;
> ---

It already says "new empty file".  That seems clear enough to me.


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message