"Yonik Seeley" <[EMAIL PROTECTED]> wrote:

> On 11/4/07, Michael McCandless <[EMAIL PROTECTED]> wrote:
> > The problem is, on a hard shutdown (kill -9 or JVM/machine crashes),
> > apparently future operations may have completed while some past
> > operations have not.  For example, the new segments_N file was
> > successfully written while say the _X.fdx file of the just-flushed
> > segment was not successfully written, even though Lucene had written &
> > closed _X.fdx before segments_N.
> 
> That should be impossible except for a machine crash.  Kill -9 or a
> JVM crash should have no effect on data already written.

OK, right.  JVM crashing or getting killed should preserve
order-of-completion on the IO operations: those IO operations that
were handed off to the OS will eventually complete successfully.

But OS crashing, machine crashing or power-cord gets pulled can result
in out-of-order completion of IO operations, which is what can corrupt
the index.

> But a sync option would be both simple and useful for people trying to
> take live snapshots of an index, or to protect against machine
> crashes.  This isn't an absolute 100% guarantee either (so don't test
> for it) - the drives often lie to the OS about data being flushed.
> It's the best we can do at our level though.
> http://www.google.com/search?q=fsync+drive+lies

Right, the best the OS can do is get all writes out to the drives, but
if the drives then cache the writes (in non-stable storage) then we
are still at risk.

Mike

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

Reply via email to