[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