mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 08:27:25 +00:00
The mdPress PDF step drives headless Chrome, which intermittently dies with "websocket url timeout reached" plus dbus/bus.cc:405 errors. Confirmed by the verbatim signature in six runs across five repos on 2026-07-22 and 07-23 — most recently it failed a docker_practice smoke test after mdPress had already finished parsing 196 chapters and assembling the HTML, dying only at step 5/5. It is infrastructure, not content: a rerun clears it every time. oc_guide already solved this with tools/build_pdf.py (bounded retries, process- scoped timeout cleanup, per-attempt logs) and is notably absent from the flake victims. This applies the same idea to the other 13 repos with a much smaller change: shadow mdpress with a retry function once per run block, so every call shape — including the multi-line continuations — is covered without rewriting 42 heterogeneous call sites. `command mdpress` reaches the real binary. Fails closed: after 3 attempts the function returns 1 and errexit fails the step. Verified all three paths against a fake mdpress before rollout — first-try success, success after two flakes, and 3x failure aborting the step without printing the following command. oc_guide is untouched (it has no `mdpress build` call). Converging the other 13 onto its richer build_pdf.py remains the better long-term shape.