This is a solution for the issue #596. On a system wide install, the autoserv processes are in fact called autotest-remote rather than autoserv, and the scheduler wasn't updating the process set with them.
As a result, in the scheduler refresh loop, the processes always looked as finished, which makes the scheduler to try to read its pid file, and as the process is not actually finished, report the process as it died without writing exit code. The result is even when a verify is finished successfuly the verify step is reported as a failure. The solution is to make the _refresh_processes private method of the DroneUtility class to accept a list of processes to be verified, and verify both 'autoserv' and 'autotest-remote' processes when refreshing the autoserv processes present. This should be pushed both to next and the 0.14 branch. Martin, you may apply the patch directly to the RPM as an emergency measure. CC: Martin Krizek <[email protected]> CC: Paul Whalen <[email protected]> Signed-off-by: Lucas Meneghel Rodrigues <[email protected]> --- scheduler/drone_utility.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scheduler/drone_utility.py b/scheduler/drone_utility.py index 6b2cba1..c5d2a8e 100755 --- a/scheduler/drone_utility.py +++ b/scheduler/drone_utility.py @@ -121,6 +121,8 @@ class DroneUtility(object): def _refresh_processes(self, command_name, open=open, site_check_parse=None): + if type(command_name) == str: + command_name = [command_name] # The open argument is used for test injection. check_mark = settings.get_value('SCHEDULER', 'check_processes_for_dark_mark', @@ -128,7 +130,7 @@ class DroneUtility(object): processes = [] for info in self._get_process_info(): is_parse = (site_check_parse and site_check_parse(info)) - if info['comm'] == command_name or is_parse: + if info['comm'] in command_name or is_parse: if (check_mark and not self._check_pid_for_dark_mark(info['pid'], open=open)): self._warn('%(comm)s process pid %(pid)s has no ' @@ -172,7 +174,8 @@ class DroneUtility(object): 'check_parse', lambda x: False) results = { 'pidfiles' : self._read_pidfiles(pidfile_paths), - 'autoserv_processes' : self._refresh_processes('autoserv'), + 'autoserv_processes' : self._refresh_processes(['autoserv', + 'autotest-remote']), 'parse_processes' : self._refresh_processes( 'parse', site_check_parse=site_check_parse), 'pidfiles_second_read' : self._read_pidfiles(pidfile_paths), -- 1.8.1.2 _______________________________________________ Autotest-kernel mailing list [email protected] https://www.redhat.com/mailman/listinfo/autotest-kernel
