That's interesting.  So it would be a very small change to add transactional
(and even 2-phase commit) capabilities to the writer?  What about deletes?
Since they use the reader, would it still be possible to allow a 2-phase
commit/abort on that?

I would very much like to have a 2-phase commit in Lucene in order to ensure
that it is always in sync with my database.  I always thought that I'd end
up having to write custom code to store the Lucene index in the database,
but maybe that wouldn't be necessary...?

Scott

> -----Original Message-----
> From: Doug Cutting [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, June 27, 2002 10:36 AM
> To: Lucene Users List
> Subject: Re: Stress Testing Lucene
> 
> 
> It's very hard to leave an index in a bad state.  Updating the 
> "segments" file atomically updates the index.  So the only way to 
> corrupt things is to only partly update the segments file.  
> But that too 
> is hard, since it's first written to a temporary file, which is then 
> renamed "segments".  The only vulnerability I know if is that 
> in Java on 
> Win32 you can't atomically rename a file to something that already 
> exists, so Lucene has to first remove the old version.  So if 
> you were 
> to crash between the time that the old version of "segments" 
> is removed 
> and the new version is moved into place, then the index would be 
> corrupt, because it would have no "segments" file.
> 
> Doug

Reply via email to