You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In k8s mode, when the exec WebSocket to the pod closes as "Success" with no exit code (the stream is disrupted mid-step), the step is reported as succeeded / exit 0 even though it never finished. The job goes green on a truncated step.
Where it comes from
Two spots, both present in v0.8.1 and on main:
execPodStep (packages/k8s/src/k8s/index.ts) resolves resp.code || 0 on a Success close with no exit code, so it does not throw.
RunScriptStep then discards that code, and the entrypoint does a hardcoded process.exit(0), unlike RunContainerStep which propagates the real exit code.
So a Success close that arrives with no exit code is indistinguishable from a genuine exit 0.
The heartbeat PR #333 is merged but unreleased (v0.8.1 predates it), and it only handles full socket silence, not a Success close that arrives with no exit code. So it does not fix this path.
What we would like
Propagate the real exit code out of execPodStep / RunScriptStep (match RunContainerStep behavior).
Treat a Success close with no exit code as a failure rather than exit 0.
able to reproduce.
What happens
In k8s mode, when the exec WebSocket to the pod closes as "Success" with no exit code (the stream is disrupted mid-step), the step is reported as succeeded / exit 0 even though it never finished. The job goes green on a truncated step.
Where it comes from
Two spots, both present in
v0.8.1and onmain:execPodStep(packages/k8s/src/k8s/index.ts) resolvesresp.code || 0on a Success close with no exit code, so it does not throw.RunScriptStepthen discards that code, and the entrypoint does a hardcodedprocess.exit(0), unlikeRunContainerStepwhich propagates the real exit code.So a Success close that arrives with no exit code is indistinguishable from a genuine exit 0.
Why #333 does not cover it
The heartbeat PR #333 is merged but unreleased (
v0.8.1predates it), and it only handles full socket silence, not a Success close that arrives with no exit code. So it does not fix this path.What we would like
execPodStep/RunScriptStep(matchRunContainerStepbehavior).Happy to test a pre-release build against a reproducing environment.