Bugzilla – Bug 1644
stresstest over the wire with dispatch leads to corrupted repository
Last modified: 2012-05-13 05:04:54 EDT
The heavy test done with the distributed_hg_burner lead to a corrupted repository. The repository was served via "hg serve" and many clients pulled, merged, pushed and committed via mercurial.dispatch.dispatch(["command"]). The corruption occured in reiserfs as well as in tmpfs. To test it yourself, you can run the test script locally: Set up an empty repo and share it with "hg serve -p 6666". $ hg clone http://bitbucket.org/ArneBab/distributed_hg_burner/ $ cd distributed_hg_burner # for as many clients as you want to use, run (CLIENT = some id of the client) $ python burn.py --url "http://127.0.0.1:6666" --target-dir "/tmp/repo-CLIENT" And do put the server and the client onto a tmpfs (ramdisk). In GNU/Linux you get a tmpfs via sudo mount -t tmpfs -o size=400M,mode=0666 tmpfs TARGET_DIR (just included to make it unecessary for people to read this up, if they don't have the command at hand right now) Note: The test burn_simple.py which uses actual calls to hg instead of dispatch didn't yet lead to a corruption. It is considerably slower, though. burn_simple.py is available in the same repo as burn.py and takes the same options.
The test without dispatch now generated over 5000 commits, and I don't see any corruption. I now do another test with the same setup (and all in tmpfs) but with dispatch again to see if I get errors there.
--- Bug imported by bugzilla@serpentine.com 2012-05-12 08:59 EDT --- This bug was previously known as _bug_ 1644 at http://mercurial.selenic.com/bts/issue1644 Imported an attachment (id=1186)