Failed CQ builds:
https://luci-milo.appspot.com/buildbot/chromeos/wizpig-paladin/2650
https://luci-milo.appspot.com/buildbot/chromeos/edgar-paladin/2528
Logs:
03/25 00:10:43.081 ERROR| server_job:0895| Exception escaped control file, job aborting:
Traceback (most recent call last):
File "/usr/local/autotest/server/server_job.py", line 884, in run
self._execute_code(server_control_file, namespace)
File "/usr/local/autotest/server/server_job.py", line 1396, in _execute_code
execfile(code_file, namespace, namespace)
File "/usr/local/autotest/results/186396713-chromeos-test/hostless/control.srv", line 79, in <module>
dynamic_suite.reimage_and_run(**args_dict)
File "/usr/local/autotest/server/cros/dynamic_suite/dynamic_suite.py", line 517, in reimage_and_run
_perform_reimage_and_run(suite_spec, afe, tko, suite_job_id=my_job_id)
File "/usr/local/autotest/server/cros/dynamic_suite/dynamic_suite.py", line 561, in _perform_reimage_and_run
child_dependencies=spec.child_dependencies,
File "/usr/local/autotest/server/cros/dynamic_suite/suite.py", line 1543, in create_from_predicates
name, builds, board, cf_getter, run_prod_code, **dargs)
File "/usr/local/autotest/server/cros/dynamic_suite/suite.py", line 1667, in __init__
test_args=test_args,
File "/usr/local/autotest/server/cros/dynamic_suite/suite.py", line 927, in find_and_parse_tests
tests = retriever.retrieve_for_suite(suite_name)
File "/usr/local/autotest/server/cros/dynamic_suite/suite.py", line 584, in retrieve_for_suite
return self._parse_cf_text_many(control_file_texts)
File "/usr/local/autotest/server/cros/dynamic_suite/suite.py", line 617, in _parse_cf_text_many
for path, text in control_file_texts:
File "/usr/local/autotest/server/cros/dynamic_suite/suite.py", line 667, in _get_cf_texts_for_suite
suite_info = self._cf_getter.get_suite_info(suite_name=suite_name)
File "/usr/local/autotest/server/cros/dynamic_suite/control_file_getter.py", line 341, in get_suite_info
file_contents = self._list_suite_controls(suite_name=suite_name)
File "/usr/local/autotest/server/cros/dynamic_suite/control_file_getter.py", line 325, in _list_suite_controls
suite_name=suite_name)
File "/usr/local/autotest/client/common_lib/cros/dev_server.py", line 376, in metrics_wrapper
return wrapper()
File "/usr/local/autotest/client/common_lib/cros/retry.py", line 218, in func_retry
remaining_time)
File "/usr/local/autotest/client/common_lib/cros/retry.py", line 123, in timeout
default_result = func(*args, **kwargs)
File "/usr/local/autotest/client/common_lib/cros/dev_server.py", line 370, in wrapper
return method(*args, **kwargs)
File "/usr/local/autotest/client/common_lib/cros/dev_server.py", line 1469, in list_suite_controls
return json.load(cStringIO.StringIO(self.run_call(call)))
File "/usr/lib/python2.7/json/__init__.py", line 290, in load
**kw)
File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
It is caused when the devserver was asked to return the content of the control files for a given build in json format. However, the json is in invalid format:
call = self.build_call('list_suite_controls', build=build,
suite_name=suite_name)
return json.load(cStringIO.StringIO(self.run_call(call)))
It may caused by devserver flake? We need better loggings. One possible solution is to print out the output from devserver when exception is raised.
Comment 1 by shuqianz@chromium.org
, Apr 17 2018