HgWeb.cgi Hanging During Push

Jensen, Aaron ajensen at webmd.net
Thu Apr 19 19:05:57 UTC 2012


We're running Mercurial 2.1.1 under IIS using CGI on Windows 2008.  We have two server-side hooks (written in PowerShell) that run on pretxnchangegroup.  One checks for case collisions if a file was added in any of the incoming changesets, the other checks for merge direction when pushing merges (we have some internal rules about what branches can be merged with other branches).  These hooks can take up to a couple minutes for pushes with a lot of changesets.  Our repository has over 70k files, and is 17+ GB in size.

We're noticing that if developer #2 pushes while developer #1 is pushing (his python.exe CGI process has locked the repo and our hooks are running), as expected, developer #2's CGI process sits and waits for developer #1's push to finish.  However, once developer #1's push succeeds, developer #2's CGI process doesn't detect that the repo is available/unlocked, and never locks the repo or runs any hooks.  It just hangs, using no CPU or increasing in memory.

I would expect that developer #2 would get a message about "waiting for lock" message, but the last message Mercurial outputs is "searching for changes".  Hitting CTRL+C doesn't stop the push.  Developer #2 has to kill hg.exe, or I have to log into our Mercurial server and kill developer #2's CGI process.  No repository corruption occurs on either the client or the server.

How can I go about debugging this problem?  Does it look familiar to anyone?

     <:> Aaron Jensen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial/attachments/20120419/242dac4b/attachment-0002.html>


More information about the Mercurial mailing list