couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Damien Katz <dam...@apache.org>
Subject Re: Detailed info on the B-tree store? Native implementations thereof?
Date Tue, 11 Aug 2009 23:55:54 GMT

On Aug 11, 2009, at 7:15 PM, Jason Davies wrote:

> On 12 Aug 2009, at 00:08, Robert Newson wrote:
>
>>> The worst problem is that the disk controller will reorder sector  
>>> writes to reduce seek time, which in effect means that if power is  
>>> lost, some random subset of the last writes may not happen. So you  
>>> won't just end up with a truncated file
>>
>> But what about that issue? It think it's tolerated because couchdb
>> searches backward for the last non-corrupt header, right?
>>
>> find_header(_Fd, -1) ->
>>   no_valid_header;
>> find_header(Fd, Block) ->
>>   case (catch load_header(Fd, Block)) of
>>   {ok, Bin} ->
>>       {ok, Bin};
>>   _Error ->
>>       find_header(Fd, Block -1)
>>   end.
>
>
> What if the tail-header isn't corrupted but some of the preceding  
> writes were, due to the tail-header being written before preceding  
> blocks?


We fsync the everything to disk before we write the header, then fsync  
again. It's possible to turn the fsyncs off via the ini if you know  
that you FS won't reorder the writes.

-Damien

>
> --
> Jason Davies
>
> www.jasondavies.com
>


Mime
View raw message