Tentative fix for usehttp2=true

Peter Arrenbrecht peter.arrenbrecht at gmail.com
Thu May 12 14:59:06 CDT 2011


Here's another failure with the final pushkey request when cloning thg
from bitbucket:

$ hg clone https://bitbucket.org/tortoisehg/thg/ /tmp/cloned --config
ui.usehttp2=true --config ui.http2debuglevel=debug
...
reading remaining 6647 of existing chunk
looping with 7 data remaining
reading chunk of length 0
looping with 2 data remaining
added 11737 changesets with 17160 changes to 1363 files (+1 heads)
updating to branch default
735 files updated, 0 files merged, 0 files removed, 0 files unresolved
sending GET request for
/tortoisehg/thg/?cmd=listkeys&namespace=bookmarks to bitbucket.org on
port 443
socket appears closed in read
response read 0 data during _select
** unknown exception encountered, please report by visiting
**  http://mercurial.selenic.com/wiki/BugTracker
** Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56) [GCC 4.4.5]
** Mercurial Distributed SCM (version 1.8.3+149-7ebdbef38406)
** Extensions loaded:
Traceback (most recent call last):
  File "./hg", line 38, in <module>
    mercurial.dispatch.run()
  File "/home/peo/dev/hg/dev-crew/mercurial/dispatch.py", line 16, in run
    sys.exit(dispatch(sys.argv[1:]))
  File "/home/peo/dev/hg/dev-crew/mercurial/dispatch.py", line 36, in dispatch
    return _runcatch(u, args)
  File "/home/peo/dev/hg/dev-crew/mercurial/dispatch.py", line 58, in _runcatch
    return _dispatch(ui, args)
  File "/home/peo/dev/hg/dev-crew/mercurial/dispatch.py", line 613, in _dispatch
    cmdpats, cmdoptions)
  File "/home/peo/dev/hg/dev-crew/mercurial/dispatch.py", line 418, in
runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/home/peo/dev/hg/dev-crew/mercurial/dispatch.py", line 667, in
_runcommand
    return checkargs()
  File "/home/peo/dev/hg/dev-crew/mercurial/dispatch.py", line 621, in checkargs
    return cmdfunc()
  File "/home/peo/dev/hg/dev-crew/mercurial/dispatch.py", line 610, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
  File "/home/peo/dev/hg/dev-crew/mercurial/util.py", line 385, in check
    return func(*args, **kwargs)
  File "/home/peo/dev/hg/dev-crew/mercurial/commands.py", line 1034, in clone
    branch=opts.get('branch'))
  File "/home/peo/dev/hg/dev-crew/mercurial/hg.py", line 362, in clone
    rb = src_repo.listkeys('bookmarks')
  File "/home/peo/dev/hg/dev-crew/mercurial/wireproto.py", line 103, in listkeys
    d = self._call("listkeys", namespace=encoding.fromlocal(namespace))
  File "/home/peo/dev/hg/dev-crew/mercurial/httprepo.py", line 162, in _call
    fp = self._callstream(cmd, **args)
  File "/home/peo/dev/hg/dev-crew/mercurial/httprepo.py", line 113, in
_callstream
    resp = self.urlopener.open(req)
  File "/usr/lib/python2.6/urllib2.py", line 391, in open
    response = self._open(req, data)
  File "/usr/lib/python2.6/urllib2.py", line 409, in _open
    '_open', req)
  File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
    result = func(*args)
  File "/home/peo/dev/hg/dev-crew/mercurial/httpconnection.py", line
230, in https_open
    return self.do_open(self._makesslconnection, req)
  File "/home/peo/dev/hg/dev-crew/mercurial/httpconnection.py", line
201, in do_open
    r = h.getresponse()
  File "/home/peo/dev/hg/dev-crew/mercurial/httpclient/__init__.py",
line 644, in getresponse
    r._select()
  File "/home/peo/dev/hg/dev-crew/mercurial/httpclient/__init__.py",
line 178, in _select
    self._load_response(self._end_headers)
  File "/home/peo/dev/hg/dev-crew/mercurial/httpclient/__init__.py",
line 261, in _load_response
    http_ver, status = hdrs.split(' ', 1)
ValueError: need more than 1 value to unpack
closed connection to bitbucket.org on 443

-parren

On Thu, May 12, 2011 at 9:24 PM, Peter Arrenbrecht
<peter.arrenbrecht at gmail.com> wrote:
> On Thu, May 12, 2011 at 7:12 PM, Augie Fackler <durin42 at gmail.com> wrote:
>> For anyone experiencing the ssl defect, I've got a proposed fix out
>> for review at http://codereview.appspot.com/4532054/. If that works,
>> I'll push it to py-nonblocking-http and mail the corresponding change
>> for Mercurial. I'd like someone to test this that was experiencing the
>> defect, since I can't reproduce it myself (but I think I got unit
>> tests that are about right).
>
> Works for me. Thanks,
> -parren
>
>> On Wed, May 11, 2011 at 7:34 AM, Peter Arrenbrecht
>> <peter.arrenbrecht at gmail.com> wrote:
>>> On Wed, May 11, 2011 at 2:20 PM, Peter Arrenbrecht
>>> <peter.arrenbrecht at gmail.com> wrote:
>>>> On Wed, May 11, 2011 at 2:19 PM, Peter Arrenbrecht
>>>> <peter.arrenbrecht at gmail.com> wrote:
>>>>> On Wed, May 11, 2011 at 2:17 PM, Augie Fackler <durin42 at gmail.com> wrote:
>>>>>>
>>>>>> On May 11, 2011, at 7:16 AM, Peter Arrenbrecht wrote:
>>>>>>
>>>>>>> On Wed, May 11, 2011 at 2:13 PM, Augie Fackler <durin42 at gmail.com> wrote:
>>>>>>>> Wow, I'm dumb. I'll get a test and fix (probably what you posted) into the upstream library and then get it imported back into hg.
>>>>>>>
>>>>>>> Please also look into the read error I mentioned on IRC:
>>>>>>> http://paste.pocoo.org/show/386790/
>>>>>>> -parren
>>>>>>
>>>>>> Was this repeatable consistently?
>>>>>
>>>>> Was and still is. ;)
>>>>> -parren
>>>>
>>>> Saw this with pull/incoming from Bitbucket and on a fresh clone of
>>>> oplop from Google Code.
>>>
>>> Better stack trace here:
>>>
>>> using https://bitbucket.org/tortoisehg/thg
>>> sending capabilities command
>>> warning: bitbucket.org certificate with fingerprint
>>> 81:2b:08:90:dc:d3:71:ee:e0:7c:b4:75:ce:9b:6c:48:94:56:a1:fe not
>>> verified (check hostfingerprints or web.cacerts config setting)
>>> comparing with https://bitbucket.org/tortoisehg/thg
>>> sending changegroupsubset command
>>> Traceback (most recent call last):
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/dispatch.py", line 58, in _runcatch
>>>    return _dispatch(ui, args)
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/dispatch.py", line 613, in _dispatch
>>>    cmdpats, cmdoptions)
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/dispatch.py", line 418, in
>>> runcommand
>>>    ret = _runcommand(ui, options, cmd, d)
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/dispatch.py", line 667, in
>>> _runcommand
>>>    return checkargs()
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/dispatch.py", line 621, in checkargs
>>>    return cmdfunc()
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/dispatch.py", line 610, in <lambda>
>>>    d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/util.py", line 385, in check
>>>    return func(*args, **kwargs)
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/commands.py", line 2717, in incoming
>>>    ret = hg.incoming(ui, repo, source, opts)
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/hg.py", line 472, in incoming
>>>    return _incoming(display, subreporecurse, ui, repo, source, opts)
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/hg.py", line 431, in _incoming
>>>    revs, opts["bundle"], opts["force"])
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/bundlerepo.py", line 333,
>>> in getremotechanges
>>>    cg = other.changegroupsubset(incoming, onlyheads, 'incoming')
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/wireproto.py", line 123,
>>> in changegroupsubset
>>>    bases=bases, heads=heads)
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/httprepo.py", line 113, in
>>> _callstream
>>>    resp = self.urlopener.open(req)
>>>  File "/usr/lib/python2.6/urllib2.py", line 391, in open
>>>    response = self._open(req, data)
>>>  File "/usr/lib/python2.6/urllib2.py", line 409, in _open
>>>    '_open', req)
>>>  File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
>>>    result = func(*args)
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/httpconnection.py", line
>>> 232, in https_open
>>>    return self.do_open(self._makesslconnection, req)
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/httpconnection.py", line
>>> 201, in do_open
>>>    r = h.getresponse()
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/httpclient/__init__.py",
>>> line 631, in getresponse
>>>    r._select()
>>>  File "/home/peo/dev/hg/dev-crew/mercurial/httpclient/__init__.py",
>>> line 168, in _select
>>>    data = self.sock.recv(INCOMING_BUFFER_SIZE)
>>>  File "/usr/lib/python2.6/ssl.py", line 215, in recv
>>>    return self.read(buflen)
>>>  File "/usr/lib/python2.6/ssl.py", line 136, in read
>>>    return self._sslobj.read(len)
>>> SSLError: [Errno 2] _ssl.c:1331: The operation did not complete (read)
>>> abort: _ssl.c:1331: The operation did not complete (read)
>>>
>>
>


More information about the Mercurial-devel mailing list