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

Side by Side Diff: gclient_scm.py

Issue 3326004: gclient: exponential backoff of SCM commands on known failure types.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools/
Patch Set: '' Created 10 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | scm.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Gclient-specific SCM-specific operations.""" 5 """Gclient-specific SCM-specific operations."""
6 6
7 import logging 7 import logging
8 import os 8 import os
9 import posixpath 9 import posixpath
10 import re 10 import re
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 if not upstream_branch or not upstream_branch.startswith('refs/remotes'): 249 if not upstream_branch or not upstream_branch.startswith('refs/remotes'):
250 current_type = "hash" 250 current_type = "hash"
251 logging.debug("Current branch is not tracking an upstream (remote)" 251 logging.debug("Current branch is not tracking an upstream (remote)"
252 " branch.") 252 " branch.")
253 elif upstream_branch.startswith('refs/remotes'): 253 elif upstream_branch.startswith('refs/remotes'):
254 current_type = "branch" 254 current_type = "branch"
255 else: 255 else:
256 raise gclient_utils.Error('Invalid Upstream: %s' % upstream_branch) 256 raise gclient_utils.Error('Invalid Upstream: %s' % upstream_branch)
257 257
258 # Update the remotes first so we have all the refs. 258 # Update the remotes first so we have all the refs.
259 backoff_time = 5
259 for _ in range(10): 260 for _ in range(10):
260 try: 261 try:
261 remote_output, remote_err = scm.GIT.Capture( 262 remote_output, remote_err = scm.GIT.Capture(
262 ['remote'] + verbose + ['update'], 263 ['remote'] + verbose + ['update'],
263 self.checkout_path, 264 self.checkout_path,
264 print_error=False) 265 print_error=False)
265 break 266 break
266 except gclient_utils.CheckCallError, e: 267 except gclient_utils.CheckCallError, e:
267 # Hackish but at that point, git is known to work so just checking for 268 # Hackish but at that point, git is known to work so just checking for
268 # 502 in stderr should be fine. 269 # 502 in stderr should be fine.
269 if '502' in e.stderr: 270 if '502' in e.stderr:
270 options.stdout.write(str(e) + '\n') 271 options.stdout.write(str(e) + '\n')
271 options.stdout.write('Sleeping 15 seconds and retrying...\n') 272 options.stdout.write('Sleeping %.1f seconds and retrying...\n' %
272 time.sleep(15) 273 backoff_time)
274 time.sleep(backoff_time)
275 backoff_time *= 1.3
273 continue 276 continue
274 raise 277 raise
275 278
276 if verbose: 279 if verbose:
277 options.stdout.write(remote_output.strip() + '\n') 280 options.stdout.write(remote_output.strip() + '\n')
278 # git remote update prints to stderr when used with --verbose 281 # git remote update prints to stderr when used with --verbose
279 options.stdout.write(remote_err.strip() + '\n') 282 options.stdout.write(remote_err.strip() + '\n')
280 283
281 # This is a big hammer, debatable if it should even be here... 284 # This is a big hammer, debatable if it should even be here...
282 if options.force or options.reset: 285 if options.force or options.reset:
(...skipping 692 matching lines...) Expand 10 before | Expand all | Expand 10 after
975 978
976 This method returns a new list to be used as a command.""" 979 This method returns a new list to be used as a command."""
977 new_command = command[:] 980 new_command = command[:]
978 if revision: 981 if revision:
979 new_command.extend(['--revision', str(revision).strip()]) 982 new_command.extend(['--revision', str(revision).strip()])
980 # --force was added to 'svn update' in svn 1.5. 983 # --force was added to 'svn update' in svn 1.5.
981 if ((options.force or options.manually_grab_svn_rev) and 984 if ((options.force or options.manually_grab_svn_rev) and
982 scm.SVN.AssertVersion("1.5")[0]): 985 scm.SVN.AssertVersion("1.5")[0]):
983 new_command.append('--force') 986 new_command.append('--force')
984 return new_command 987 return new_command
OLDNEW
« no previous file with comments | « no previous file | scm.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698