disappearing repo history on samba server

Joel B. Mohler jmohler at eshcom.com
Tue Dec 7 13:38:21 CST 2010


Hi,  My windows machines have been having a rocky relationship with 
their samba server.  The latest issue is that a push to a certain 
repository will wipe out revision history.  I've narrowed this down to a 
very small slice of mercurial code which has nothing at all to do with 
the changeset index, but the symptom with-in mercurial is that 
.hg\store\00changelog.i is renamed to .hg\store\00changelog.i.hgtmp and 
then my repository history is effectively wiped out (although the exact 
details of what goes on with 00changelog.i.hgtmp appear to vary somewhat 
by windows client machine).

The fatal bug is reproduced by the python script at
     http://kiwistrawberry.us/opener.py
This script assumes that you have mercurial and python win32 extensions 
installed on a windows machine.  Without python win32 extensions, the 
windows link code goes into graceful (?) degradation mode and so the 
faulty code is not run.  The bug reproduces with two different windows 
machines (vista and server 2008) and two different linux servers (ubuntu 
and gentoo) so I'm quite confident it's not just a server configuration 
fluke.

However, there's a weird gotcha which I don't understand yet.  It is 
that I can only reproduce this on a large repository of about 32000 
revisions which I can't make public.  Attempts on a smaller repository 
have all worked (i.e. reproducing the bug failed).  From my opener.py 
script, I come to the conclusion that for some reason 00changelog.i is 
held open longer for a larger repository, but I was unable to determine 
why that might be.

All relevant mercurial installs are at least 1.7.1 and I don't see any 
evidence that variations of revision beyond the arrival of the 
checknlink function make any difference.

So, two questions:
1)  Am I correct in believing that opener.py illustrates potential for a 
data-losing bug?
2)  Is more information needed about my repository or can a fix for 
opener.py be found with-out that?

Thanks
Joel Mohler




More information about the Mercurial-devel mailing list