codeforamerica / chime

A city-focused content management system
http://chimecms.org/
BSD 3-Clause "New" or "Revised" License
35 stars 12 forks source link

fix GitPython error: len() mismatch in _get_fetch_info_from_stderr #455

Closed tmaybe closed 9 years ago

tmaybe commented 9 years ago

We're seeing this a lot on production. I suspect it may be fixed by a newer version of GitPython. We're using 0.3.2.RC1 and the current release is 0.3.6. Our issue may be the one described here:

https://github.com/gitpython-developers/GitPython/issues/301

tmaybe commented 9 years ago

I notice now that the fix for that issue isn't in v0.3.6 so that may not solve it :disappointed:

wpietri commented 9 years ago

Mike points out that there is a 1.0.1 out there: https://pypi.python.org/pypi/GitPython/1.0.1

Do we want to try that and cross our fingers?

tmaybe commented 9 years ago

It's worth a shot! But I'd like to try & figure out how to reproduce the error on dev first.

migurski commented 9 years ago

This may be a git version mismatch, which would require a different version of the git binary.

Here is a complete traceback.

 File "/opt/chime/webapp/chime/view_functions.py", line 453, in decorated_function
   return route_function(*args, **kwargs)
 File "/opt/chime/webapp/chime/view_functions.py", line 506, in decorated_function
   return route_function(*args, **kwargs)
 File "/opt/chime/webapp/chime/view_functions.py", line 552, in decorated_function
   repo = get_repo(flask_app=current_app)
 File "/opt/chime/webapp/chime/view_functions.py", line 126, in get_repo
   user_repo.remotes.origin.fetch()
 File "/usr/local/lib/python2.7/dist-packages/git/remote.py", line 593, in fetch
   return self._get_fetch_info_from_stderr(proc, progress or RemoteProgress())
 File "/usr/local/lib/python2.7/dist-packages/git/remote.py", line 539, in _get_fetch_info_from_stderr
   assert len(fetch_info_lines) == len(fetch_head_info), "len(%s) != len(%s)" % (fetch_head_info, fetch_info_lines)
AssertionError: len(["76bd06d46bdf0a1645e6e47563004780906aface\tnot-for-merge\tbranch 'jvmhrgssl' of /var/opt/chime/data/default/repo\n", "1471df09c0551d4a667de02a39bd07e8c573a7d9\tnot-for-merge\tbranch 'master' of /var/opt/chime/data/default/repo\n", "89e6df27bb3a6954d9707d0eb9b42df100487330\tnot-for-merge\tbranch 'mtlrpnppq' of /var/opt/chime/data/default/repo\n", "1f6201334ff50ac150632a1bc52d9a5c77bb9c04\tnot-for-merge\tbranch 'pxhwsrhtp' of /var/opt/chime/data/default/repo\n", "fa0b164f1398819d0ec082f1509582383b89d34f\tnot-for-merge\tbranch 'qsrwqlsjv' of /var/opt/chime/data/default/repo\n", "76bd06d46bdf0a1645e6e47563004780906aface\tnot-for-merge\tbranch 'jvmhrgssl' of /var/opt/chime/data/default/repo\n", "1471df09c0551d4a667de02a39bd07e8c573a7d9\tnot-for-merge\tbranch 'master' of /var/opt/chime/data/default/repo\n", "89e6df27bb3a6954d9707d0eb9b42df100487330\tnot-for-merge\tbranch 'mtlrpnppq' of /var/opt/chime/data/default/repo\n", "1f6201334ff50ac150632a1bc52d9a5c77bb9c04\tnot-
for-merge\tbranch 'pxhwsrhtp' of /var/opt/chime/data/default/repo\n", "fa0b164f1398819d0ec082f1509582383b89d34f\tnot-for-merge\tbranch 'qsrwqlsjv' of /var/opt/chime/data/default/repo\n"]) != len([' = [up to date]      jvmhrgssl  -> origin/jvmhrgssl', ' = [up to date]      master     -> origin/master', ' = [up to date]      mtlrpnppq  -> origin/mtlrpnppq', ' = [up to date]      pxhwsrhtp  -> origin/pxhwsrhtp', ' = [up to date]      qsrwqlsjv  -> origin/qsrwqlsjv'])
migurski commented 9 years ago

Expanding the error a bit, I see this doubling-up:

AssertionError: len([

    "76bd06d46bdf0a1645e6e47563004780906aface\tnot-for-merge\tbranch 'jvmhrgssl' of /var/opt/chime/data/default/repo\n"
    "1471df09c0551d4a667de02a39bd07e8c573a7d9\tnot-for-merge\tbranch 'master' of /var/opt/chime/data/default/repo\n"
    "89e6df27bb3a6954d9707d0eb9b42df100487330\tnot-for-merge\tbranch 'mtlrpnppq' of /var/opt/chime/data/default/repo\n"
    "1f6201334ff50ac150632a1bc52d9a5c77bb9c04\tnot-for-merge\tbranch 'pxhwsrhtp' of /var/opt/chime/data/default/repo\n"
    "fa0b164f1398819d0ec082f1509582383b89d34f\tnot-for-merge\tbranch 'qsrwqlsjv' of /var/opt/chime/data/default/repo\n"

    "76bd06d46bdf0a1645e6e47563004780906aface\tnot-for-merge\tbranch 'jvmhrgssl' of /var/opt/chime/data/default/repo\n"
    "1471df09c0551d4a667de02a39bd07e8c573a7d9\tnot-for-merge\tbranch 'master' of /var/opt/chime/data/default/repo\n"
    "89e6df27bb3a6954d9707d0eb9b42df100487330\tnot-for-merge\tbranch 'mtlrpnppq' of /var/opt/chime/data/default/repo\n"
    "1f6201334ff50ac150632a1bc52d9a5c77bb9c04\tnot-for-merge\tbranch 'pxhwsrhtp' of /var/opt/chime/data/default/repo\n"
    "fa0b164f1398819d0ec082f1509582383b89d34f\tnot-for-merge\tbranch 'qsrwqlsjv' of /var/opt/chime/data/default/repo\n"

]) != len([

    ' = [up to date]      jvmhrgssl  -> origin/jvmhrgssl'
    ' = [up to date]      master     -> origin/master'
    ' = [up to date]      mtlrpnppq  -> origin/mtlrpnppq'
    ' = [up to date]      pxhwsrhtp  -> origin/pxhwsrhtp'
    ' = [up to date]      qsrwqlsjv  -> origin/qsrwqlsjv'

])
migurski commented 9 years ago

I have not been able to reproduce this, and the doubled-up lines in the expanded version here make me think that it’s not going to be easy to reproduce, like it’s a weird doubling of stderr lines. I’m thinking that we upgrade to 1.0.1, release a new version, and then watch to see if these errors mystically disappear of their own accord like GitPython suggests.

wpietri commented 9 years ago

Seems fine by me.

tmaybe commented 9 years ago

:+1: