[Bug 4895] New: with evolve enabled, `hg parents` acquires the wlock, causing it to fail in read-only repo

mercurial-bugs at selenic.com mercurial-bugs at selenic.com
Thu Oct 8 22:56:55 UTC 2015


https://bz.mercurial-scm.org/show_bug.cgi?id=4895

            Bug ID: 4895
           Summary: with evolve enabled, `hg parents` acquires the wlock,
                    causing it to fail in read-only repo
           Product: Mercurial
           Version: 3.5.2
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: bug
          Priority: wish
         Component: evolution
          Assignee: bugzilla at selenic.com
          Reporter: rm at fb.com
                CC: mercurial-devel at selenic.com,
                    pierre-yves.david at ens-lyon.org

Running `hg parents` takes the lock when it should not. For example, `hgg log
-r 'parents()' --pager=no` which returns the same info does not acquire any
such lock.

I got a backtrace of the callstack where the lock is acquired:

  > /data/users/rmcelroy/hgdev/hg/mercurial/localrepo.py(1271)wlock()
  -> l = self._wlockref and self._wlockref()
  (Pdb) bt
    /home/rmcelroy/bin/hgg(43)<module>()
  -> mercurial.dispatch.run()
    /data/users/rmcelroy/hgdev/hg/mercurial/dispatch.py(54)run()
  -> sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255)
    /data/users/rmcelroy/hgdev/hg/mercurial/dispatch.py(116)dispatch()
  -> ret = _runcatch(req)
    /data/users/rmcelroy/hgdev/hg/mercurial/dispatch.py(187)_runcatch()
  -> return _dispatch(req)
    /data/users/rmcelroy/hgdev/hg/mercurial/dispatch.py(920)_dispatch()
  -> cmdpats, cmdoptions)
    /data/users/rmcelroy/hgdev/hg/mercurial/dispatch.py(679)runcommand()
  -> ret = _runcommand(ui, options, cmd, d)
    /data/users/rmcelroy/hgdev/hg/mercurial/extensions.py(183)closure()
  -> return func(*(args + a), **kw)
    /data/users/rmcelroy/hgdev/hg/hgext/pager.py(130)pagecmd()
  -> return orig(ui, options, cmd, cmdfunc)
    /data/users/rmcelroy/hgdev/hg/mercurial/extensions.py(183)closure()
  -> return func(*(args + a), **kw)
    /data/users/rmcelroy/hgdev/hg/hgext/color.py(525)colorcmd()
  -> return orig(ui_, opts, cmd, cmdfunc)
    /data/users/rmcelroy/hgdev/hg/mercurial/dispatch.py(1051)_runcommand()
  -> return checkargs()
    /data/users/rmcelroy/hgdev/hg/mercurial/dispatch.py(1011)checkargs()
  -> return cmdfunc()
    /data/users/rmcelroy/hgdev/hg/mercurial/dispatch.py(917)<lambda>()
  -> d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
    /data/users/rmcelroy/hgdev/hg/mercurial/util.py(796)check()
  -> return func(*args, **kwargs)
    /data/users/rmcelroy/hgdev/hg/mercurial/extensions.py(183)closure()
  -> return func(*(args + a), **kw)
    /data/users/rmcelroy/hgdev/hg/mercurial/util.py(796)check()
  -> return func(*args, **kwargs)
    /usr/lib/python2.6/site-packages/hgsubversion/wrappers.py(63)parents()
  -> return orig(ui, repo, *args, **opts)
    /data/users/rmcelroy/hgdev/hg/mercurial/util.py(796)check()
  -> return func(*args, **kwargs)
    /data/users/rmcelroy/hgdev/hg/mercurial/extensions.py(183)closure()
  -> return func(*(args + a), **kw)
    /data/users/rmcelroy/hgdev/hg/mercurial/util.py(796)check()
  -> return func(*args, **kwargs)
    /usr/lib/python2.6/site-packages/evolve.py(692)wrapmayobsoletewc()
  -> wlock = repo.wlock()
  > /data/users/rmcelroy/hgdev/hg/mercurial/localrepo.py(1271)wlock()
  -> l = self._wlockref and self._wlockref()
  (Pdb)

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list