Rietveld: refactor and improve retries with UrlError exception.

BUG=564304
R=sergiyb@chromium.org

Review URL: https://codereview.chromium.org/1497763003

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@297830 0039d316-1c4b-4281-b951-d872f2087c98
changes/01/332501/1
tandrii@chromium.org 9 years ago
parent 6e1e951984
commit 29d5e56cd5

@ -431,18 +431,23 @@ class Rietveld(object):
except urllib2.URLError, e:
if retry >= (self._maxtries - 1):
raise
if (not 'Name or service not known' in e.reason and
not 'EOF occurred in violation of protocol' in e.reason and
not 'timed out' in e.reason and
not 'The handshake operation timed out' in e.reason and
# On windows we hit weird bug http://crbug.com/537417
# with message '[Errno 10060] A connection attempt failed...'
not (sys.platform.startswith('win') and
isinstance(e.reason, socket.error) and
e.reason.errno == errno.ETIMEDOUT
)
):
# Usually internal GAE flakiness.
def is_transient():
# The idea here is to retry if the error isn't permanent.
# Unfortunately, there are so many different possible errors,
# that we end up enumerating those that are known to us to be
# transient.
# The reason can be a string or another exception, e.g.,
# socket.error or whatever else.
reason_as_str = str(e.reason)
for retry_anyway in [
'Name or service not known',
'EOF occurred in violation of protocol',
'timed out']:
if retry_anyway in reason_as_str:
return True
return False # Assume permanent otherwise.
if not is_transient():
raise
except socket.error, e:
if retry >= (self._maxtries - 1):

Loading…
Cancel
Save