Skip to content

Commit d2d8cac

Browse files
authored
ci: identify faulted node via sacct when the .out marker is missing (#1835)
1 parent 808df61 commit d2d8cac

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

.github/scripts/submit-slurm-job.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,17 @@ while :; do
301301
# another node. Note bench-pair.sh probes only after building both trees, so
302302
# a fault there discards those builds and the resubmit repeats them.
303303
faulted_node=$(bash "$SCRIPT_DIR/node-exclude.sh" node-from "$output_file")
304+
# Fall back to SLURM's own record when the MFC_FAULT_NODE marker is
305+
# unreadable. A job that dies before its .out is flushed (or before NFS
306+
# makes it visible) leaves no marker, so node-from returns empty; the
307+
# merge below then adds nothing and SLURM re-draws the SAME bad node. A
308+
# dead-GPU V100 (atl1-1-02-006-34-0, cuInit 999) ate both attempts of run
309+
# 34183404644 exactly this way. sacct knows the node whether or not the
310+
# .out exists, so identification no longer depends on the marker.
311+
if [ -z "$faulted_node" ]; then
312+
faulted_node=$(sacct -j "$job_id" -X -n -o NodeList 2>/dev/null | head -n1 | tr -d ' ')
313+
case "$faulted_node" in ""|None*|*[,\[]*) faulted_node="" ;; esac
314+
fi
304315
if [ "$node_attempt" -lt "$MFC_MAX_NODE_RESUBMITS" ]; then
305316
node_attempt=$((node_attempt + 1))
306317
node_exclude=$(bash "$SCRIPT_DIR/node-exclude.sh" merge "$node_exclude" "$faulted_node")

0 commit comments

Comments
 (0)