Mercurial push locks
Matt Mackall
mpm at selenic.com
Thu Sep 25 20:55:11 UTC 2014
On Wed, 2014-09-24 at 13:06 -0600, durwin at mgtsciences.com wrote:
> Simon King <simon at simonking.org.uk> wrote on 09/24/2014 12:46:36 PM:
>
> > From: Simon King <simon at simonking.org.uk>
> > To: durwin at mgtsciences.com
> > Cc: Mercurial mailing list <mercurial at selenic.com>
> > Date: 09/24/2014 12:46 PM
> > Subject: Re: Mercurial push locks
> >
> > On 24 Sep 2014, at 16:16, durwin at mgtsciences.com wrote:
> >
> > > I have users when push'ing get locked. If they interrupt the
> > push, it appears to complete. Also, if I delete the lock file in
> > .hg/store/ it also will complete. I see no evidence of lost code,
> > it *does* seem to complete. This occurs when run from command line
> > and from Netbeans. I have tried to duplicate the issue, but all
> > works for me normally. I had one user do a clean clone, but the
> > problem still occurs. I tried duplicating problem as one of the
> > users, but again it all works for me. I am at a loss. I included
> > one of the users console output. Notice where user interrupted process.
>
> > >
> > > project:UsersExample username$ hg commit -m "Added a slider to
> > filter detail.
> > > Also fixed Joe layout"
> > > abort: no username supplied (see "hg help config")
> > > project:UsersExample username$ hg commit -m "Added a slider to
> > filter detail.
> > > Also fixed Joe layout" -u username
> > > project:UsersExample username$ hg push
> > > pushing to ssh://server//home/svnuser/project-hg/WebApplication
> > > searching for changes
> > > remote: listing keys for "bookmarks"
> > > ^Cinterrupted!
> > > remote: adding changesets
> > > remote: changesets: 1 chunks
> > > remote: add changeset 4fde4613957f
> > > remote: adding manifests
> > > remote: manifests: 1/1 chunks (100.00%)
> > > remote: adding file changes
> > > remote: adding UsersExample/web/secure/css/main.css revisions
> > > remote: files: 1/8 chunks (12.50%)
> > > remote: adding UsersExample/web/secure/css/userInfo.css revisions
> > > remote: files: 2/8 chunks (25.00%)
> > > remote: adding UsersExample/web/secure/index.jsp revisions
> > > remote: files: 3/8 chunks (37.50%)
> > > remote: adding UsersExample/web/secure/main.js revisions
> > > remote: files: 4/8 chunks (50.00%)
> > > remote: adding UsersExample/web/secure/microtasks/DetailsTask.js
> revisions
> > > remote: files: 5/8 chunks (62.50%)
> > > remote: adding
> UsersExample/web/secure/summer_api/renderable_alpha/Edge.js
> > > revisions
> > > remote: files: 6/8 chunks (75.00%)
> > > remote: adding UsersExample/web/secure/view/Node.js revisions
> > > remote: files: 7/8 chunks (87.50%)
> > > remote: adding UsersExample/web/secure/view/ValidationEdge.js
> revisions
> > > remote: files: 8/8 chunks (100.00%)
> > > remote: added 1 changesets with 8 changes to 8 files
> > > remote: updating the branch cache
> > > remote: calling hook changegroup.push: hgext.push-ep.push
> > > remote: Killed by signal 2.
> > >
> >
> > What does the remote changegroup.push hook do? Does it complete?
>
> It calls a python hook.
>
> [hooks]
> changegroup.push = python:hgext.push-ep.push
>
> This is the code.
>
> import logging
> import os
> import pwd
> import syslog
>
> def push(ui, repo, node, hooktype, **kwargs):
> call(["sudo", "-u", "svnuser", "/usr/bin/hg-svnuser", "push", "-f",
> "--debug", "-R", "/home/svnuser/project-hg/WebApplication/"])
> syslog.syslog("Mercurial push by " + pwd.getpwuid(os.getuid())[0])
> syslog.syslog(hooktype)
> return False
>
> The syslog messages are in the log, and when I do hg incoming/outgoing, it
> indicates both repositories are in sync.
>
> One user pushes to repository B, it pushes to A. Other users push to A
> and it pushes to B.
>
> This use to work without the locking. And as I mentioned, it works for me
> (no locking).
With the introduction of phases (Mercurial 2.1, Feb 2012), pushes may
now acquire a lock on the sending side (so that it can update the phase
of local commits). Thus, you may get a deadlock if you push inside a
hook where a lock is already held.
http://mercurial.selenic.com/wiki/Phases
--
Mathematics is the supreme nostalgia of our time.
More information about the Mercurial
mailing list