Show message every 30s for long running presubmits

Slow presubmits like CheckUnwantedDependencies can often take over 30s
to run. Print a "still running" message so users don't think something
hung.

Bug: b/358457858
Change-Id: I47f5589af43d8fb0f384e6f7c633e9d0addd568a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5782588
Commit-Queue: Gavin Mak <gavinmak@google.com>
Reviewed-by: Scott Lee <ddoman@chromium.org>
changes/88/5782588/6
Gavin Mak 10 months ago committed by LUCI CQ
parent 281d3d5286
commit 7e1a7e0fda

@ -1817,6 +1817,19 @@ class PresubmitExecuter(object):
the result of the presubmit function call.
"""
start_time = time_time()
def _progress_loop(event):
while not event.is_set():
if event.wait(timeout=30):
return
sys.stdout.write(f'Still running {function_name} after '
f'{int(time_time() - start_time)}s...\n')
event = threading.Event()
event_thread = threading.Thread(target=_progress_loop, args=(event,))
event_thread.daemon = True
event_thread.start()
try:
result = eval(function_name + '(*__args)', context)
self._check_result_type(result)
@ -1827,6 +1840,9 @@ class PresubmitExecuter(object):
'Evaluation of %s failed: %s, %s' %
(function_name, e_value, traceback.format_exc()))
]
finally:
event.set()
event_thread.join()
elapsed_time = time_time() - start_time
if elapsed_time > 10.0:

Loading…
Cancel
Save