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