# HG changeset patch # User Augie Fackler # Date 2019-01-31 16:12:59 # Node ID 13dad5cb4b9939c4b6dad27ff36ec72cc716702a # Parent 8c13f7b0ace653a521a1a063d93cd58fd1f43e19 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