Mercurial push error
Matt Mackall
mpm at selenic.com
Sat Jul 28 11:39:53 CDT 2007
On Sat, Jul 28, 2007 at 08:11:57AM -0400, Norman Walsh wrote:
> I have a mercurial repository that I've been using for a while.
> Everything seemed to work fine. Then I made a bunch of edits and
> issued a push. The push took tens of minutes if not an hour or more
> and finally failed:
>
> ~$ hg --verbose push
> running ssh user at password "hg -R repository/path/name serve --stdio"
> pushing to ssh://user@password/repository/path/name
> searching for changes
> 19 changesets found
I presume the wait was here..
> remote: ** unknown exception encountered, details follow
> remote: ** report bug details to http://www.selenic.com/mercurial/bts
> remote: ** or mercurial at selenic.com
> remote: ** Mercurial Distributed SCM (version 8706e75e6431)
> remote: Traceback (most recent call last):
> remote: File "/home/ndw/bin/hg", line 11, in ?
> remote: mercurial.commands.run()
> remote: File "/home/ndw/lib/python/mercurial/commands.py", line 3125, in run
> remote: sys.exit(dispatch(sys.argv[1:], argv0=sys.argv[0]))
> remote: File "/home/ndw/lib/python/mercurial/commands.py", line 3122, in dispatch
> remote: return cmdutil.runcatch(u, args, argv0=argv0)
> remote: File "/home/ndw/lib/python/mercurial/cmdutil.py", line 37, in runcatch
> remote: return dispatch(ui, args, argv0=argv0)
> remote: File "/home/ndw/lib/python/mercurial/cmdutil.py", line 378, in dispatch
> remote: ret = runcommand(ui, options, cmd, d)
> remote: File "/home/ndw/lib/python/mercurial/cmdutil.py", line 431, in runcommand
> remote: return checkargs()
> remote: File "/home/ndw/lib/python/mercurial/cmdutil.py", line 387, in checkargs
> remote: return cmdfunc()
> remote: File "/home/ndw/lib/python/mercurial/cmdutil.py", line 370, in <lambda>
> remote: d = lambda: func(ui, repo, *args, **cmdoptions)
> remote: File "/home/ndw/lib/python/mercurial/commands.py", line 2451, in serve
> remote: s.serve_forever()
> remote: File "/home/ndw/lib/python/mercurial/sshserver.py", line 39, in serve_forever
> remote: while self.serve_one(): pass
> remote: File "/home/ndw/lib/python/mercurial/sshserver.py", line 46, in serve_one
> remote: if impl: impl()
> remote: File "/home/ndw/lib/python/mercurial/sshserver.py", line 193, in do_unbundle
> remote: r = self.repo.addchangegroup(fp, 'serve', self.client_url())
> remote: File "/home/ndw/lib/python/mercurial/localrepo.py", line 1776, in addchangegroup
> remote: tr = self.transaction()
> remote: File "/home/ndw/lib/python/mercurial/localrepo.py", line 495, in transaction
> remote: aftertrans(renames))
> remote: File "/home/ndw/lib/python/mercurial/transaction.py", line 23, in __init__
> remote: raise AssertionError(_("journal already exists - run hg recover"))
> remote: AssertionError: journal already exists - run hg recover
> $ hg recover
> no interrupted transaction available
>
> Clues, please?
We crashed as soon as we try to create a transaction. Which happens very
shortly after we get the repository lock. So it waited a long time to
acquire the lock and then discovered a failed transaction.
So it looks like someone (possibly you?) tried to push, and their
session got killed. Somehow Mercurial died without releasing the lock
and the transaction (this might happen if it gets OOM-killed or
similar). Your session eventually noticed the lock was stale and
claimed it, only to discover the aborted transaction.
--
Mathematics is the supreme nostalgia of our time.
More information about the Mercurial
mailing list