Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(524)

Unified Diff: scm.py

Issue 3132021: Improve the retry algorithm to be much more liberal. (Closed)
Patch Set: Also adds retry on name resolution failure Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: scm.py
diff --git a/scm.py b/scm.py
index 9fb03833ffa79d0c58456cf919ecc76dcf964bee..06716db672988dbc16c7e7173ec811ce42980454 100644
--- a/scm.py
+++ b/scm.py
@@ -446,43 +446,39 @@ class SVN(object):
True,
CaptureMatchingLines)
except gclient_utils.Error:
+ def IsKnownFailure():
+ for x in failure:
+ if (x.startswith('svn: OPTIONS of') or
+ x.startswith('svn: PROPFIND of') or
+ x.startswith('svn: REPORT of') or
+ x.startswith('svn: Unknown hostname')):
+ return True
+ return False
+
# Subversion client is really misbehaving with Google Code.
if args[0] == 'checkout':
# Ensure at least one file was checked out, otherwise *delete* the
# directory.
if len(file_list) == previous_list_len:
- for x in failure:
- if ('502 Bad Gateway' in x or
- 'svn: REPORT of \'/svn/!svn/vcc/default\': 200 OK' in x):
- # No file were checked out, so make sure the directory is
- # deleted in case it's messed up and try again.
- # Warning: It's bad, it assumes args[2] is the directory
- # argument.
- if os.path.isdir(args[2]):
- gclient_utils.RemoveDirectory(args[2])
- break
- else:
+ if not IsKnownFailure():
# No known svn error was found, bail out.
raise
+ # No file were checked out, so make sure the directory is
+ # deleted in case it's messed up and try again.
+ # Warning: It's bad, it assumes args[2] is the directory
+ # argument.
+ if os.path.isdir(args[2]):
+ gclient_utils.RemoveDirectory(args[2])
else:
# Progress was made, convert to update since an aborted checkout
# is now an update.
args = ['update'] + args[1:]
else:
# It was an update or export.
- # We enforce that some progress has been made or HTTP 502.
- if len(file_list) == previous_list_len:
- for x in failure:
- if ('502 Bad Gateway' in x or
- 'svn: REPORT of \'/svn/!svn/vcc/default\': 200 OK' in x):
- # Ok, know failure code.
- break
- else:
- # No known svn error was found, bail out.
- raise
- else:
- # Progress was made, it's fine.
- pass
+ # We enforce that some progress has been made or a known failure.
+ if len(file_list) == previous_list_len and not IsKnownFailure():
+ # No known svn error was found and no progress, bail out.
+ raise
print "Sleeping 15 seconds and retrying...."
time.sleep(15)
continue
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698