[autotest] Add a timeout on symbolicate_minidump_with_devserver
Set the timeout to 20min for now. Will adjust the value after collecting
enough data in stats crash_collect.symbolicate_minidump_with_devserver and
symbolicate_timedout.
BUG=chromium:532559
TEST=unittest, local verify
import common
from autotest_lib.server import site_crashcollect
site_crashcollect.find_and_generate_minidump_stacktraces('dmps')
modify symbolicate_minidump_with_devserver to force a timeout.
Change-Id: I76c0aa8d85bada286ab616490d1b8048226a84f0
Reviewed-on: https://chromium-review.googlesource.com/300221
Commit-Ready: Dan Shi <[email protected]>
Tested-by: Dan Shi <[email protected]>
Reviewed-by: Mungyung Ryu <[email protected]>
diff --git a/server/site_crashcollect.py b/server/site_crashcollect.py
index f41d769..48388cb 100644
--- a/server/site_crashcollect.py
+++ b/server/site_crashcollect.py
@@ -7,6 +7,7 @@
import re
from autotest_lib.client.common_lib import utils as client_utils
from autotest_lib.client.common_lib.cros import dev_server
+from autotest_lib.client.common_lib.cros import retry
from autotest_lib.client.common_lib.cros.graphite import autotest_stats
from autotest_lib.client.cros import constants
from autotest_lib.server.cros.dynamic_suite.constants import JOB_BUILD_KEY
@@ -15,6 +16,9 @@
CRASH_SERVER_OVERLOAD = 'crash_server_overload'
CRASH_SERVER_FOUND = 'crash_server_found'
+SYMBOLICATE_TIMEDOUT = 'symbolicate_timedout'
+
+timer = autotest_stats.Timer('crash_collect')
def generate_minidump_stacktrace(minidump_path):
"""
@@ -32,6 +36,7 @@
(minidump_path, symbol_dir, minidump_path))
[email protected]
def symbolicate_minidump_with_devserver(minidump_path, resultdir):
"""
Generates a stack trace for the specified minidump by consulting devserver.
@@ -100,8 +105,16 @@
# If that did not succeed, try to symbolicate using the dev server.
try:
minidumps.append(minidump)
- symbolicate_minidump_with_devserver(minidump, host_resultdir)
- logging.info('Generated stack trace for dump %s', minidump)
+ is_timeout, _ = retry.timeout(
+ symbolicate_minidump_with_devserver,
+ args=(minidump, host_resultdir),
+ timeout_sec=1200)
+ if is_timeout:
+ logging.warn('Generating stack trace is timed out for dump '
+ '%s', minidump)
+ autotest_stats.Counter(SYMBOLICATE_TIMEDOUT).increment()
+ else:
+ logging.info('Generated stack trace for dump %s', minidump)
continue
except dev_server.DevServerException as e:
logging.warning('Failed to generate stack trace on devserver for '