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

Reply via email to