# HG changeset patch # User Augie Fackler # Date 2019-01-31 16:12:59 # Node ID ac14362ced4b6f81875d887953c25e0e31e0649b # Parent 56404e03f57e315bc773f2470c7fe7659735e801 py3: fix test-remotefilelog-repack.t This is uglier, but more obviously correct in my opinion. I guess Python 3 doesn't hang on to the exception as long, which seems reasonable. Differential Revision: https://phab.mercurial-scm.org/D5781 diff --git a/contrib/python3-whitelist b/contrib/python3-whitelist --- a/contrib/python3-whitelist +++ b/contrib/python3-whitelist @@ -603,6 +603,7 @@ test-remotefilelog-permissions.t test-remotefilelog-permisssions.t test-remotefilelog-prefetch.t test-remotefilelog-pull-noshallow.t +test-remotefilelog-repack.t test-remotefilelog-share.t test-remotefilelog-sparse.t test-remotefilelog-tags.t diff --git a/hgext/remotefilelog/basestore.py b/hgext/remotefilelog/basestore.py --- a/hgext/remotefilelog/basestore.py +++ b/hgext/remotefilelog/basestore.py @@ -410,16 +410,18 @@ class baseunionstore(object): def wrapped(self, *args, **kwargs): retrylog = self.retrylog or noop funcname = fn.__name__ - for i in pycompat.xrange(self.numattempts): + i = 0 + while i < self.numattempts: if i > 0: retrylog('re-attempting (n=%d) %s\n' % (i, funcname)) self.markforrefresh() + i += 1 try: return fn(self, *args, **kwargs) except KeyError: - pass - # retries exhausted - retrylog('retries exhausted in %s, raising KeyError\n' % - pycompat.sysbytes(funcname)) - raise + if i == self.numattempts: + # retries exhausted + retrylog('retries exhausted in %s, raising KeyError\n' % + pycompat.sysbytes(funcname)) + raise return wrapped