Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 22 additions & 3 deletions jenkins/L0_Test.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,8 @@ def echoRemoteLogTail(def pipeline, Map remote, String remotePath, int lines = 2
numRetries: 1,
)?.trim()
pipeline.echo(tailOut ?: "")
} catch (InterruptedException e) {
throw e
} catch (Exception tailEx) {
pipeline.echo("Ignorable warning: could not tail ${remotePath} on ${remote.host}: ${tailEx.message}")
}
Expand Down Expand Up @@ -1224,18 +1226,21 @@ def runLLMTestlistWithAgent(pipeline, platform, testList, config=VANILLA_CONFIG,
if (waitRc == 3) {
checkSlurmJobActive()
}
if (waitRc != 0) {
error "SLURM job ${slurmJobID} did not reach RUNNING during the queue wait. Terminating the job."
}

// Phase 2: job is RUNNING; wait for the Jenkins agent to come online. isNodeOnline()
// and Thread.sleep() emit no flow-nodes, so poll every 30s without bloating Blue
// Ocean, and probe job status every ~3 min (every 6th iter) to fail fast if the
// job dies during bring-up. 120 * 30s = 1h.
// job dies during bring-up. 20 * 30s = 10 min.
if (waitRc == 0) {
// Job is RUNNING: stamp the walltime-budget origin for the
// timeout duration fallback (within Phase 1's ~3min poll
// granularity of the true RUNNING transition).
jobRunningStartMs = System.currentTimeMillis()
def onlineCounter = 0
while (!CloudManager.isNodeOnline(nodeName) && onlineCounter < 120) {
while (!CloudManager.isNodeOnline(nodeName) && onlineCounter < 20) {
Thread.sleep(30L * 1000L)
if (onlineCounter % 6 == 0) {
checkSlurmJobActive()
Expand Down Expand Up @@ -1317,7 +1322,21 @@ def runLLMTestlistWithAgent(pipeline, platform, testList, config=VANILLA_CONFIG,
}
}
} else {
error "The Slurm node does not come online in the waiting period. Terminating the job."
def setupLogPath = "/home/svc_tensorrt/slurm-logs/slurm-${slurmJobID}-${nodeName}.out"
try {
CloudManager.withSlurmFrontendFailover(pipeline, remotes) { logRemote ->
echoRemoteLogTail(pipeline, logRemote, setupLogPath)
}
} catch (InterruptedException e) {
throw e
} catch (Exception logEx) {
echo "Ignorable warning: could not retrieve ${setupLogPath}: ${logEx.message}"
}
throw new InfraFailure(
"SLURM agent ${nodeName} for job ${slurmJobID} did not come online within 10 minutes " +
"after the job started. Check SLURM logs at ${setupLogPath} on ${cluster.host}.",
null, InfraFailure.TRANSIENT, InfraFailure.SLURM, "<typed:slurm-agent-online-timeout>"
)
Comment thread
coderabbitai[bot] marked this conversation as resolved.
}
}
}
Expand Down
Loading