Occasional http 500 (KeyError) errors on clone/pull/push

Bruce Cran bruce at cran.org.uk
Thu Nov 28 10:16:46 CST 2013


We have a rather busy Mercurial server (2.3.2 due the need to support 
old clients) which uses hgweb.wsgi (with Apache) with just over 200 
repositories. We've been finding that occasionally a clone/pull/push 
will error out with an http 500 failure. The error log reports a 
KeyError such as:

mod_wsgi (pid=6391): Exception occurred processing WSGI script '/www/sitename/cgi-bin/hgweb.wsgi'.

Traceback (most recent call last):
   File "/usr/local/lib/python2.7/dist-packages/mercurial/hgweb/hgwebdir_mod.py", line 147, in __call_

     return self.run_wsgi(req)
   File "/usr/local/lib/python2.7/dist-packages/mercurial/hgweb/hgwebdir_mod.py", line 205, in run_wsg

     return hgweb(repo).run_wsgi(req)
   File "/usr/local/lib/python2.7/dist-packages/mercurial/hgweb/hgweb_mod.py", line 128, in run_wsgi
     return protocol.call(self.repo, req, cmd)
   File "/usr/local/lib/python2.7/dist-packages/mercurial/hgweb/protocol.py", line 76, in call
     rsp = wireproto.dispatch(repo, p, cmd)
   File "/usr/local/lib/python2.7/dist-packages/mercurial/wireproto.py", line 351, in dispatch
     return func(repo, proto, *args)
   File "/usr/local/lib/python2.7/dist-packages/mercurial/wireproto.py", line 373, in batch
     func, spec = commands[op]
KeyError: 'lheads'

Usually the error isn't repeatable, so can be worked around by just 
doing another clone/pull/push. Sometimes though, the error happens 
repeatedly for a while.

Has anyone come across this before, and is there a fix/workaround?

-- 
Bruce


More information about the Mercurial mailing list