[issue3160] Fetching largefiles fails over http/https

Peter Linss bugs at mercurial.selenic.com
Sat Dec 17 17:37:17 CST 2011


New submission from Peter Linss <peter.linss at hp.com>:

I have a large repository of photographs (several thousand .dng files ~6MB
each) recently converted from svn to hg, the converted to largefiles.

Cloning the repository from disk to disk works fine, both local and over a
network share, however when cloning/updating from an Apache server over http
or https it sporadically fails when fetching the largefiles into the local
cache. Running 'hg up' continues for some files then fails randomly.

Both client and server are running Mercurial 2.0 on OSX (OSX 10.7 on client,
OSX 10.4 on server), server is running Apache 2.2.21, Python 2.7.2, mod_wsgi
3.3. Client also running Python 2.7.2.

Server log (at debug level) has no errors when using http, but has SSL
errors when using https. Ideally I want to run the server https only over a
non-standard port, I've tried both http and https (standard port 443 and
non-standard port), both with and without http authentication.

With http authentication it fails after fetching around 100 files or so,
without http authentication it fails after 200-300 files.

All other extensions are disabled. 

As a side note, fetching over http is significantly slower

Client traceback as follows:
> hg -v --debug --traceback up
resolving manifests
 overwrite False partial False
 ancestor b9248c0e08e4 local b9248c0e08e4+ remote b9248c0e08e4
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
getting changed largefiles
Found 3a287a8501441fde5e26c95bd0df82ef2c35281e in store
Found c181e53c8ebb306848d87282663cddb8fbfdfe5a in store
(many more snipped...)
sending statlfile command
sending getlfile command
getting largefiles: 248/780 lfile (31.79%)
getting 2011/2011-07-25/DSC_0160.dng:c6d5057601cba40966cdaa11451859b2308f7271
sending statlfile command
Traceback (most recent call last):
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py",
line 87, in _runcatch
    return _dispatch(req)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py",
line 684, in _dispatch
    cmdpats, cmdoptions)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py",
line 466, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py",
line 738, in _runcommand
    return checkargs()
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py",
line 692, in checkargs
    return cmdfunc()
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py",
line 681, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/util.py",
line 454, in check
    return func(*args, **kwargs)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/extensions.py",
line 139, in wrap
    util.checksignature(origfn), *args, **kwargs)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/util.py",
line 454, in check
    return func(*args, **kwargs)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/hgext/largefiles/overrides.py",
line 243, in override_update
    return orig(ui, repo, *pats, **opts)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/util.py",
line 454, in check
    return func(*args, **kwargs)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/commands.py",
line 5604, in update
    ret = hg.update(repo, rev)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/extensions.py",
line 184, in wrap
    return wrapper(origfn, *args, **kwargs)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/hgext/largefiles/overrides.py",
line 509, in hg_update
    lfcommands.updatelfiles(repo.ui, repo)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/hgext/largefiles/lfcommands.py",
line 403, in updatelfiles
    cachelfiles(ui, repo, '.')
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/hgext/largefiles/lfcommands.py",
line 385, in cachelfiles
    ret = store.get(toget)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/hgext/largefiles/basestore.py",
line 87, in get
    hhash = binascii.hexlify(self._getfile(tmpfile, filename, hash))
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/hgext/largefiles/remotestore.py",
line 52, in _getfile
    stat = self._stat(hash)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/hgext/largefiles/wirestore.py",
line 29, in _stat
    return self.remote.statlfile(hash)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/hgext/largefiles/proto.py",
line 117, in statlfile
    return int(self._call("statlfile", sha=sha))
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/httprepo.py",
line 169, in _call
    fp = self._callstream(cmd, **args)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/hgext/largefiles/proto.py",
line 161, in httprepo_callstream
    return http_oldcallstream(self, cmd, **args)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/httprepo.py",
line 117, in _callstream
    resp = self.urlopener.open(req)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py",
line 394, in open
    response = self._open(req, data)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py",
line 412, in _open
    '_open', req)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py",
line 372, in _call_chain
    result = func(*args)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/url.py",
line 314, in http_open
    return self.do_open(httpconnection, req)
  File
"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/keepalive.py",
line 259, in do_open
    raise urllib2.URLError(err)
URLError: <urlopen error [Errno 8] nodename nor servname provided, or not known>
abort: error: nodename nor servname provided, or not known

----------
messages: 18351
nosy: plinss
priority: bug
status: unread
title: Fetching largefiles fails over http/https
topic: largefiles

____________________________________________________
Mercurial issue tracker <bugs at mercurial.selenic.com>
<http://mercurial.selenic.com/bts/issue3160>
____________________________________________________


More information about the Mercurial-devel mailing list