From 0a659a397f43d6189a69c38363bf07c872ccfbcf Mon Sep 17 00:00:00 2001 From: Dan Helfman Date: Tue, 7 Jul 2020 22:05:53 -0700 Subject: [PATCH] Attempt to fix no-repro test failure of log_outputs() (#339). --- borgmatic/execute.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/borgmatic/execute.py b/borgmatic/execute.py index e140ea8..6f5e56b 100644 --- a/borgmatic/execute.py +++ b/borgmatic/execute.py @@ -84,9 +84,14 @@ def log_outputs(processes, exclude_stdouts, output_log_level, borg_local_path): logger.log(output_log_level, line) + still_running = False + for process in processes: exit_code = process.poll() if output_buffers else process.wait() + if exit_code is None: + still_running = True + # If any process errors, then raise accordingly. if exit_code_indicates_error(process, exit_code, borg_local_path): # If an error occurs, include its output in the raised exception so that we don't @@ -108,7 +113,7 @@ def log_outputs(processes, exclude_stdouts, output_log_level, borg_local_path): exit_code, command_for_process(process), '\n'.join(last_lines) ) - if all(process.poll() is not None for process in processes): + if not still_running: break # Consume any remaining output that we missed (if any).