Address code review: compute stderr_text only when chunks are present
This commit is contained in:
@@ -3762,8 +3762,11 @@ async def _monitor_backup_subprocess(proc: asyncio.subprocess.Process) -> None:
|
|||||||
if status in {"SUCCESS", "FAILED"}:
|
if status in {"SUCCESS", "FAILED"}:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
detail = ""
|
||||||
|
if stderr_chunks:
|
||||||
stderr_text = b"".join(stderr_chunks).decode("utf-8", errors="replace").strip()
|
stderr_text = b"".join(stderr_chunks).decode("utf-8", errors="replace").strip()
|
||||||
detail = f" — stderr: {stderr_text}" if stderr_text else ""
|
if stderr_text:
|
||||||
|
detail = f" — stderr: {stderr_text}"
|
||||||
msg = f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] ERROR: Backup subprocess exited unexpectedly (code {rc}).{detail}"
|
msg = f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] ERROR: Backup subprocess exited unexpectedly (code {rc}).{detail}"
|
||||||
await loop.run_in_executor(None, _append_backup_log, msg)
|
await loop.run_in_executor(None, _append_backup_log, msg)
|
||||||
await loop.run_in_executor(None, _write_backup_status, "FAILED")
|
await loop.run_in_executor(None, _write_backup_status, "FAILED")
|
||||||
|
|||||||
@@ -108,8 +108,10 @@ class ManualBackupWorkflowTests(unittest.TestCase):
|
|||||||
the FAILED log entry so the UI shows what went wrong (e.g. 'bash: not
|
the FAILED log entry so the UI shows what went wrong (e.g. 'bash: not
|
||||||
found') rather than only the raw exit code."""
|
found') rather than only the raw exit code."""
|
||||||
source = SERVER_FILE.read_text()
|
source = SERVER_FILE.read_text()
|
||||||
|
self.assertIn("stderr_chunks", source)
|
||||||
self.assertIn("stderr_text", source)
|
self.assertIn("stderr_text", source)
|
||||||
self.assertIn('if stderr_text else ""', source)
|
# stderr detail is conditionally appended only when non-empty
|
||||||
|
self.assertIn('detail = f" — stderr: {stderr_text}"', source)
|
||||||
|
|
||||||
def test_exit_code_127_subprocess_stderr_drain(self):
|
def test_exit_code_127_subprocess_stderr_drain(self):
|
||||||
"""Behavioral regression: a subprocess that exits 127 must have its
|
"""Behavioral regression: a subprocess that exits 127 must have its
|
||||||
|
|||||||
Reference in New Issue
Block a user