cecf0236fa
Switch MODEL_LOG_FILE from /var/log/portal/comfyui.log to /var/log/portal/api-wrapper.log and MODEL_LOAD_LOG_MSG to "Uvicorn running on". A live test instance showed the previous setup firing benchmark on ComfyUI's "To see the GUI go to:" line, which races api-wrapper.sh: that script runs convert-workflows.sh (which itself waits for ComfyUI ready and then converts workflows for several seconds) before launching uvicorn. The benchmark hit a closed port on :18288 and the SDK's __call_backend has no retry on connection refused, locking the worker into a permanent error state. Watching the api-wrapper log instead means the benchmark only fires after uvicorn is bound and the pyworker_benchmark.json symlink is already in place — no SDK changes required. Trim MODEL_ERROR_LOG_MSGS down to "Application startup failed". The old patterns were ComfyUI-specific (won't appear in api-wrapper.log) and dangerous: ModelError is fatal, so "Value not in list:" matching on an api-wrapper-style log would let one malformed client request kill the worker. CUDA OOM is similarly off-limits (indistinguishable from a too-greedy client request via substring match; the benchmark- failure path already catches model-load OOM at boot). Empty MODEL_INFO_LOG_MSGS — the prior ComfyUI download pattern can never match this log file. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>