On 02/16/2011 08:44 AM, Philip Martin wrote:
> So if the timing is just right it's possible for one Apache process to
> start writing the transaction, for that process to stop, and for another
> process to take over the commit. WANdisco observed problems on FSFS
> where the transaction is synced at the end of the commit, not for each
> http request. What ends up in the transaction probably depends on the
> details of the kernel memory and disk caching, the system load, the
> underlying OS filesystem, etc.
This is a concern when the repository is hosted on an NFS or other
network attached storage? If all the Apache processes are on the same
system, then I wouldn't expect any issues.
> In my testing with squid I have not managed to produce a corrupt commit,
> but I suspect that under the right conditions it would happen. I think
> that getting mod_dav_svn to sync before acknowledging each http request
> is a non-starter, for performance reasons. Can mod_dav_svn detect that
> the connection has changed? It's too late to get the old process to
> sync, but perhaps we could abort the commit? Some valid commits would
> fail, but it would avoid the small risk of a corrupt commit.
I think an fsfs.conf option to say that you want everything fsync()ed
would be an acceptable solution, for people that deploy on NFS.
Blair
Received on 2011-02-16 22:44:58 CET