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

Side by Side Diff: git_common.py

Issue 401673003: Added 'git-retry' bootstrap (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: More updates. Created 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « git-retry ('k') | git_retry.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 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 # Monkeypatch IMapIterator so that Ctrl-C can kill everything properly. 5 # Monkeypatch IMapIterator so that Ctrl-C can kill everything properly.
6 # Derived from https://gist.github.com/aljungberg/626518 6 # Derived from https://gist.github.com/aljungberg/626518
7 import multiprocessing.pool 7 import multiprocessing.pool
8 from multiprocessing.pool import IMapIterator 8 from multiprocessing.pool import IMapIterator
9 def wrapper(func): 9 def wrapper(func):
10 def wrap(self, timeout=None): 10 def wrap(self, timeout=None):
(...skipping 24 matching lines...) Expand all
35 TEST_MODE = False 35 TEST_MODE = False
36 36
37 FREEZE = 'FREEZE' 37 FREEZE = 'FREEZE'
38 FREEZE_SECTIONS = { 38 FREEZE_SECTIONS = {
39 'indexed': 'soft', 39 'indexed': 'soft',
40 'unindexed': 'mixed' 40 'unindexed': 'mixed'
41 } 41 }
42 FREEZE_MATCHER = re.compile(r'%s.(%s)' % (FREEZE, '|'.join(FREEZE_SECTIONS))) 42 FREEZE_MATCHER = re.compile(r'%s.(%s)' % (FREEZE, '|'.join(FREEZE_SECTIONS)))
43 43
44 44
45 # Retry a git operation if git returns a error response with any of these
46 # messages. It's all observed 'bad' GoB responses so far.
47 #
48 # This list is inspired/derived from the one in ChromiumOS's Chromite:
49 # <CHROMITE>/lib/git.py::GIT_TRANSIENT_ERRORS
50 #
51 # It was last imported from '7add3ac29564d98ac35ce426bc295e743e7c0c02'.
52 GIT_TRANSIENT_ERRORS = (
53 # crbug.com/285832
54 r'! \[remote rejected\].*\(error in hook\)',
55
56 # crbug.com/289932
57 r'! \[remote rejected\].*\(failed to lock\)',
58
59 # crbug.com/307156
60 r'! \[remote rejected\].*\(error in Gerrit backend\)',
61
62 # crbug.com/285832
63 r'remote error: Internal Server Error',
64
65 # crbug.com/294449
66 r'fatal: Couldn\'t find remote ref ',
67
68 # crbug.com/220543
69 r'git fetch_pack: expected ACK/NAK, got',
70
71 # crbug.com/189455
72 r'protocol error: bad pack header',
73
74 # crbug.com/202807
75 r'The remote end hung up unexpectedly',
76
77 # crbug.com/298189
78 r'TLS packet with unexpected length was received',
79
80 # crbug.com/187444
81 r'RPC failed; result=\d+, HTTP code = \d+',
82
83 # crbug.com/315421
84 r'The requested URL returned error: 500 while accessing',
85
86 # crbug.com/388876
87 r'Connection timed out',
88 )
89
90 GIT_TRANSIENT_ERRORS_RE = re.compile('|'.join(GIT_TRANSIENT_ERRORS),
91 re.IGNORECASE)
92
93
45 class BadCommitRefException(Exception): 94 class BadCommitRefException(Exception):
46 def __init__(self, refs): 95 def __init__(self, refs):
47 msg = ('one of %s does not seem to be a valid commitref.' % 96 msg = ('one of %s does not seem to be a valid commitref.' %
48 str(refs)) 97 str(refs))
49 super(BadCommitRefException, self).__init__(msg) 98 super(BadCommitRefException, self).__init__(msg)
50 99
51 100
52 def memoize_one(**kwargs): 101 def memoize_one(**kwargs):
53 """Memoizes a single-argument pure function. 102 """Memoizes a single-argument pure function.
54 103
(...skipping 604 matching lines...) Expand 10 before | Expand all | Expand 10 after
659 return None 708 return None
660 return ret 709 return ret
661 710
662 711
663 def upstream(branch): 712 def upstream(branch):
664 try: 713 try:
665 return run('rev-parse', '--abbrev-ref', '--symbolic-full-name', 714 return run('rev-parse', '--abbrev-ref', '--symbolic-full-name',
666 branch+'@{upstream}') 715 branch+'@{upstream}')
667 except subprocess2.CalledProcessError: 716 except subprocess2.CalledProcessError:
668 return None 717 return None
OLDNEW
« no previous file with comments | « git-retry ('k') | git_retry.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698