Python: Gracefully handle exceptions in diagnostics writing

This commit is contained in:
Rasmus Wriedt Larsen
2024-07-09 13:55:02 +02:00
parent a8b976b389
commit c1da2c1d2f

View File

@@ -276,14 +276,22 @@ def _extract_loop(proc_id, queue, trap_dir, archive, options, reply_queue, logge
except RecursionError as ex:
logger.error("Failed to extract %s: %s", unit, ex)
logger.traceback(WARN)
error = recursion_error_message(ex, unit)
diagnostics_writer.write(error)
try:
error = recursion_error_message(ex, unit)
diagnostics_writer.write(error)
except Exception as ex:
logger.warning("Failed to write diagnostics: %s", ex)
logger.traceback(WARN)
reply_queue.put(("FAILURE", unit, None))
except Exception as ex:
logger.error("Failed to extract %s: %s", unit, ex)
logger.traceback(WARN)
error = internal_error_message(ex, unit)
diagnostics_writer.write(error)
try:
error = internal_error_message(ex, unit)
diagnostics_writer.write(error)
except Exception as ex:
logger.warning("Failed to write diagnostics: %s", ex)
logger.traceback(WARN)
reply_queue.put(("FAILURE", unit, None))
else:
reply_queue.put(("SUCCESS", unit, None))