frank-primary: fix the SIGPIPE race in both image-digest gates
The classic 'podman images | grep -q' pattern races under set -o pipefail: grep exits on its first match, podman dies SIGPIPE (141) writing the remaining RepoDigests lines, and pipefail promotes 141 to the pipeline status — the gate reads 'no match' and refuses to deploy (2026-09-30, dankserver). Same bug in the serve script (it would restart-loop the same way). Fix: capture podman's output into a variable first, grep the variable. Patched in the R9V September deploys by luck of timing.
This commit is contained in:
1 parent
01fedb0081
commit
2339faeaa4
2 files changed
+13
-6
No files matched your search
@@ -1237,7 +1237,13 @@ deploy_llm_primary() {
|
||||
echo "ERROR: frank-primary.env missing FRANK_PRIMARY_IMAGE/MODEL_DIR/MODEL_SHARDS" >&2
|
||||
return 1
|
||||
fi
|
||||
if ! podman images --format '{{.RepoDigests}}' | grep -qF "${image#*@}"; then
|
||||
# Capture podman's output BEFORE grepping: under set -o pipefail, the
|
||||
# classic `podman images | grep -q` races (grep exits on match, podman
|
||||
# dies SIGPIPE 141 writing the rest, pipefail calls it no-match — the
|
||||
# 2026-09-30 deploy refusal).
|
||||
local digests
|
||||
digests="$(podman images --format '{{.RepoDigests}}')"
|
||||
if ! grep -qF "${image#*@}" <<<"$digests"; then
|
||||
echo "ERROR: pinned runtime image absent from rootless storage: $image" >&2
|
||||
echo "frank-primary: fetch it (podman pull $image)" >&2
|
||||
return 1
|
||||
|
||||
Reference in new issue
Block a user