Hi, Otis,

Thanks for your email. As this is very important for using Lucene in
our production system, I looked at the code to try to understand. Here
is my observation why the index won't be corrupted during a system
crash.

In the IndexWriter.java mergeSegments(...) method, there are two lines:
segmentInfos.write(directory);    // commit before deleting
deleteSegments(segmentsToDelete);//delete unused segments

The sgementInfos.write(...) writes the new segments file as
"segments.new", once the write is complete, it renames "segments.new"
to "segments".

I guess the rename operation is atomic as guaranteed by the operating
system. Otherwise, the "segments" file will be left in an inconsistent
state during the system crash.

It also appears to me that the "segments" file is the single point to
switch from old set of index segments to new ones. In case of a system
failure, the old "segments" file will be used anyway, so, no
corruption.

Is this understanding correct and thorough?

Thanks a lot,

Jian

On 7/16/05, Otis Gospodnetic <[EMAIL PROTECTED]> wrote:
> The only corruption that I've seen mentioned on this list so far was
> the corruption of the segments file, and even that people have been
> able to manually edit with a hex editor.
> 
> Otis
> 
> 
> --- jian chen <[EMAIL PROTECTED]> wrote:
> 
> > Hi,
> >
> > I know Lucene does not have transaction support at this stage.
> > However, I want to know what will happen if there is an operating
> > system crash during the indexing process, will the Lucene index got
> > corrupted?
> >
> > Thanks,
> >
> > Jian
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to