On Jan 5, 2009, at 2:38 PM, Chris Anderson wrote:

On Mon, Jan 5, 2009 at 11:32 AM, Damien Katz <[email protected]> wrote:

1) delayed commit (what you did last night)
2) fsync() commit (what I suspect Couch did on and around 0.8)
3) optional F_FULLSYNC commit, on OS X and any other platform that
provides this level of commit


If necessary and possible, we'll patch the Erlang VM. But if a platform doesn't support proper flushing, then it's not a platform that can support
an ACID database.


If I follow correctly, you're saying that on OS X, 2 == 1, so we use 3
when we want to be ACID. On Linux, as far as we know, 2 will support
ACID. There's only really two options, ACID commit, and delayed
commit. It's up to CouchDB / Erlang / the OS to make sure that the
ACID option isn't false advertising. Makes sense.

[Disclaimer : I'm not an OS filesystem expert]

Except AFAIK that's not what is happening. fsync() on OS X or linux doesn't support the 'deterministic commit to physical media', which is what I think you think you are getting.

As far as I can tell, only OS X gives you that full durability via fcntl(F_FULLSYNC), and it's horribly slow.

That's why I'm proposing three distinct modes (at least).

geir

Reply via email to