Bug 5036 - zeroconf is broken since 3.6 ae33fff17c1e
Summary: zeroconf is broken since 3.6 ae33fff17c1e
Status: RESOLVED FIXED
Alias: None
Product: Mercurial
Classification: Unclassified
Component: third-party (show other bugs)
Version: default branch
Hardware: All All
: urgent bug
Assignee: Gregory Szorc
URL:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2016-01-11 16:47 UTC by timeless
Modified: 2016-01-26 00:00 UTC (History)
1 user (show)

See Also:
Python Version: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description timeless 2016-01-11 16:47 UTC
[timeless@gcc2-power8 crew]$ hg --config extensions.zeroconf= serve 
** Unknown exception encountered with possibly-broken third-party extension remotebranches
** which supports versions 3.5 of Mercurial.
** Please disable remotebranches and try your action again.
** If that fixes the bug please report it to the extension author.
** Python 2.7.8 (default, Jul  8 2015, 18:13:08) [GCC 4.9.2 20150212 (Red Hat 4.9.2-6)]
** Mercurial Distributed SCM (version 3.6.3+793-4ea39a9df026)
** Extensions loaded: strip, mq, histedit, color, record, rebase, blackbox, remotebranches, evolve, hg-git, pager, shelve, patchbomb, zeroconf
Traceback (most recent call last):
  File "/home/timeless/hg/crew/hg", line 43, in <module>
    mercurial.dispatch.run()
  File "/home/timeless/hg/crew/mercurial/dispatch.py", line 54, in run
    sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255)
  File "/home/timeless/hg/crew/mercurial/dispatch.py", line 116, in dispatch
    ret = _runcatch(req)
  File "/home/timeless/hg/crew/mercurial/dispatch.py", line 187, in _runcatch
    return _dispatch(req)
  File "/home/timeless/hg/crew/mercurial/dispatch.py", line 921, in _dispatch
    cmdpats, cmdoptions)
  File "/home/timeless/hg/crew/mercurial/dispatch.py", line 680, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/home/timeless/hg/crew/mercurial/extensions.py", line 183, in closure
    return func(*(args + a), **kw)
  File "/home/timeless/hg/crew/hgext/pager.py", line 130, in pagecmd
    return orig(ui, options, cmd, cmdfunc)
  File "/home/timeless/hg/crew/mercurial/extensions.py", line 183, in closure
    return func(*(args + a), **kw)
  File "/home/timeless/hg/crew/hgext/color.py", line 525, in colorcmd
    return orig(ui_, opts, cmd, cmdfunc)
  File "/home/timeless/hg/crew/mercurial/extensions.py", line 183, in closure
    return func(*(args + a), **kw)
  File "/home/timeless/hg/crew/hgext/zeroconf/__init__.py", line 179, in cleanupafterdispatch
    return orig(ui, options, cmd, cmdfunc)
  File "/home/timeless/hg/crew/mercurial/dispatch.py", line 1052, in _runcommand
    return checkargs()
  File "/home/timeless/hg/crew/mercurial/dispatch.py", line 1012, in checkargs
    return cmdfunc()
  File "/home/timeless/hg/crew/mercurial/dispatch.py", line 918, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
  File "/home/timeless/hg/crew/mercurial/util.py", line 792, in check
    return func(*args, **kwargs)
  File "/home/timeless/hg/crew/mercurial/extensions.py", line 183, in closure
    return func(*(args + a), **kw)
  File "/home/timeless/hg/crew/mercurial/util.py", line 792, in check
    return func(*args, **kwargs)
  File "/home/timeless/hg/crew/hgext/mq.py", line 3515, in mqcommand
    return orig(ui, repo, *args, **kwargs)
  File "/home/timeless/hg/crew/mercurial/util.py", line 792, in check
    return func(*args, **kwargs)
  File "/home/timeless/hg/crew/mercurial/commands.py", line 5771, in serve
    cmdutil.service(opts, initfn=service.init, runfn=service.run)
  File "/home/timeless/hg/crew/mercurial/cmdutil.py", line 803, in service
    initfn()
  File "/home/timeless/hg/crew/mercurial/commands.py", line 5781, in init
    self.httpd = hgweb_server.create_server(self.ui, self.app)
  File "/home/timeless/hg/crew/mercurial/extensions.py", line 183, in closure
    return func(*(args + a), **kw)
  File "/home/timeless/hg/crew/hgext/zeroconf/__init__.py", line 116, in zc_create_server
    name = app.reponame or os.path.basename(app.repo.root)
AttributeError: 'hgweb' object has no attribute 'repo'

The first bad revision is:
changeset:   26219:ae33fff17c1e
user:        Gregory Szorc <gregory.szorc@gmail.com>
date:        Sat Aug 22 18:54:34 2015 -0700
summary:     hg: establish a cache for localrepository instances
Comment 1 timeless 2016-01-11 16:47 UTC
n.b. this isn't a thirdparty extension, but we don't have a component for it yet (someone needs to create one).
Comment 2 Gregory Szorc 2016-01-11 16:50 UTC
Bumping priority so this is tracked for 3.7.
Comment 3 HG Bot 2016-01-18 11:15 UTC
Fixed by https://selenic.com/repo/hg/rev/d2c5ad3deccb
Gregory Szorc <gregory.szorc@gmail.com>
zeroconf: access repo on hgweb_mod properly (issue5036)

hgweb_mod.hgweb.repo disappeared in ae33fff17c1e (hg: establish
a cache for localrepository instances) and the code for accessing repo
instances from hgweb was later refactored to go through a cache-aware
context manager.

Adapt zeroconf to access the repo instance via the new API.

(please test the fix)
Comment 4 Bugzilla 2016-01-26 00:00 UTC
Bug was set to TESTING for 7 days, resolving