Makes two major changes to the status log processing in autotest.py:
1) Adjusts the processing of warnings and status lines to remove
entries from their buffers as the values are written out, rather
than removing them all after processing an entire batch.
2) Changes the error handling during status log processing to
log-and-ignore exceptions that occur while talking to the remote
machine, rather than propagating exceptions.
These changes are needed to eliminate runaway failure logging that can
occur when an exception occurs during the remote status log processing.
If such a failure occurs and persists, then you can get into a loop
where a client-disconnect WARN message is logged, and then another error
will happen during the logging leading to another WARN being logged, and
so on as long as the failure keeps occuring (which can be forever in
some cases). The buffering fixed by 1) makes it even worse, since if an
error occurs the next logging pass will re-log everything in the buffer
which never gets cleared due to the error (so you get 1 WARN, then 2,
then 3, then 4, ...)
Risk: High
Visibility: Fixed the error handling of the status log processing in
autotest.py to be much more robust in the face of remote errors.
Signed-off-by: John Admanski <jadmanski@google.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@4063 592f7852-d20e-0410-864c-8624ca9c26a4
2 files changed