lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From robert engels <reng...@ix.netcom.com>
Subject Re: After kill -9 index was corrupt
Date Mon, 11 Sep 2006 17:34:22 GMT
A kill -9 should not affect the OS's writing of dirty buffers  
(including directory modifications). If this were the case, massive  
system corruption would almost always occur every time a kill -9 was  
used with any program.

The only thing a kill -9 affects is user level buffering. The OS  
always maintains a consistent view of directory modifications and or  
file modification that were requesting by programs.

This entire discussion is pointless.

If the hardware is performing lazy writes, then corruption might be  
caused during a hard-reset (e.g. power failure, hardware failure (cpu  
lockup), or device driver failure in some VERY RARE cases). Even a  
kernel panic should allow the physical devices to flush their dirty  
buffers (as the controller can in many cases detect this).

The only way to prevent this is if the OS exposes a system call to  
synchronously force the hardware to flush any buffers. The Java fsync 
() could use the OS call to peform this operation, but most likely  
would not since the performance penalty would be significant, and  
those users requiring this level of reliability would be better  
served by using UPSs and fault-tolerant systems (at every level -  
CPU, disk, etc.).


On Sep 11, 2006, at 12:13 PM, Paul Elschot wrote:

> On Monday 11 September 2006 15:36, Yonik Seeley wrote:
>> On 9/10/06, Chuck Williams <chuck@manawiz.com> wrote:
>>> Could a kill -9 prevent data from reaching disk for files that were
>>> previously closed?
>>
>> No.  After a close() the OS should have all the data... the process
>> may be killed but the OS will eventually flush all the buffers, etc.
>> File creation is pretty much always synchronous so I have no idea how
>> your problem could have happened (missing segment files).  IO  
>> error or
>> something else temporarily filling up the disk?
>
> "Pretty much always" is logically equivalent to "not always" :) ,  
> see also
> below.
>
>> If you have a power loss or crash, then that *can* cause data loss.
>> There may be mount options to make more file operations synchronous,
>> or you could maybe write your own Directory implementation to make
>> things more synchronous.
>
> New segments will have to be flushed/fsynced before the segments
> file. This could be hidden in a Directory in case a Directory hides  
> Lucene's
> segments file.
>
> Regards,
> Paul Elschot
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-dev-help@lucene.apache.org
>


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


Mime
View raw message