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

Unified Diff: gclient_utils.py

Issue 2410053002: Revert of bot_update/gclient: kill git fetch after timeout regardless of output. (Closed)
Patch Set: Created 4 years, 2 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 | tests/gclient_utils_test.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gclient_utils.py
diff --git a/gclient_utils.py b/gclient_utils.py
index 556018105cc8cd0c30e42f0ec6e235efbe900eeb..794fc023bb21ed1c59797be895424461bb787c4d 100644
--- a/gclient_utils.py
+++ b/gclient_utils.py
@@ -466,15 +466,13 @@
# TODO(tandrii): we really want to make use of subprocess42 here, and not
# re-invent the wheel, but it's too much work :(
- def __init__(self, timeout, child, child_info):
+ def __init__(self, timeout, child):
self._timeout = timeout
self._child = child
- self._child_info = child_info
self._cv = threading.Condition()
# All items below are protected by condition above.
self._kill_at = None
- self._killing_attempted = False
self._working = True
self._thread = None
@@ -484,10 +482,6 @@
self._thread = threading.Thread(name='_KillTimer', target=self._work)
self._thread.daemon = True
self._thread.start()
-
- @property
- def killing_attempted(self):
- return self._killing_attempted
def poke(self):
if not self._timeout:
@@ -512,9 +506,8 @@
self._cv.wait(timeout=left)
continue
try:
- logging.warn('killing child %s %s because of no output for %fs',
- self._child.pid, self._child_info, self._timeout)
- self._killing_attempted = True
+ logging.warn('killing child %s because of no output for %fs',
+ self._child, self._timeout)
self._child.kill()
except OSError:
logging.exception('failed to kill child %s', self._child)
@@ -535,8 +528,9 @@
retry: If the process exits non-zero, sleep for a brief interval and try
again, up to RETRY_MAX times.
kill_timeout: (float) if given, number of seconds after which process would
- be killed. Must not be used with shell=True as only shell process
- would be killed, but not processes spawned by shell.
+ be killed if there is no output. Must not be used with shell=True as
+ only shell process would be killed, but not processes spawned by
+ shell.
stderr is always redirected to stdout.
"""
@@ -549,8 +543,6 @@
sleep_interval = RETRY_INITIAL_SLEEP
run_cwd = kwargs.get('cwd', os.getcwd())
- debug_kid_info = "'%s' in %s" % (' '.join('"%s"' % x for x in args), run_cwd)
-
for _ in xrange(RETRY_MAX + 1):
kid = subprocess2.Popen(
args, bufsize=0, stdout=subprocess2.PIPE, stderr=subprocess2.STDOUT,
@@ -566,13 +558,14 @@
# normally buffering is done for each line, but if svn requests input, no
# end-of-line character is output after the prompt and it would not show up.
try:
- timeout_killer = _KillTimer(kill_timeout, kid, debug_kid_info)
+ timeout_killer = _KillTimer(kill_timeout, kid)
in_byte = kid.stdout.read(1)
if in_byte:
if call_filter_on_first_line:
filter_fn(None)
in_line = ''
while in_byte:
+ timeout_killer.poke()
output.write(in_byte)
if print_stdout:
stdout.write(in_byte)
@@ -601,12 +594,8 @@
return output.getvalue()
if not retry:
break
- print ("WARNING: subprocess %s failed; will retry after a short nap..." %
- debug_kid_info)
- if timeout_killer.killing_attempted:
- print('The subprocess above was likely killed because it looked hung. '
- 'Output thus far:\n> %s' %
- ('\n> '.join(output.getvalue().splitlines())))
+ print ("WARNING: subprocess '%s' in %s failed; will retry after a short "
+ 'nap...' % (' '.join('"%s"' % x for x in args), run_cwd))
time.sleep(sleep_interval)
sleep_interval *= 2
raise subprocess2.CalledProcessError(
« no previous file with comments | « no previous file | tests/gclient_utils_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698