Regular repository corruption -- help needed.

Alexander Krauss krauss at in.tum.de
Thu Dec 20 20:37:05 UTC 2012


On 12/20/2012 01:49 AM, Bryan O'Sullivan wrote:
> During a push, Mercurial uses a special redirection mechanism to add
> entries to the changelog file. That mechanism is very simple: it writes
> data to a temporary file, then reads the contents of that file and
> writes them to the end of the real changelog after all of the
> changegroup has streamed through.
>
> The forensics that I see are 100% consistent with a situation where your
> NFS client happily says "here's your file full of zeroes" when you read
> back a file (not full of zeroes) that you wrote earlier. You are not
> guaranteed write-to-read consistency even on a single node (whatever the
> specs may say).

I see. Is this analysis consistent with the fact that already-existing 
changesets get corrupted by the push? My naive understanding of 
Mercurial's append-only model is that those should remain intact. But I 
may be oversimplifying here...

> I have a few questions around your report.
>
> What is your NFS server setup? What OS is the server running, and what
> version of NFS and transport are you using?

I must ask our local admins. Will report back when I have the answers.

> You say you've seen this happen on a "plain local push", too - but was
> that also on an NFS filesystem? (I bet you a pfennig it was.)

Yes. Here, local just meant that no ssh was involved. Both source and 
destination repository live on NFS.

Alex



More information about the Mercurial mailing list