This commit is contained in:
2026-08-27 11:14:38 +08:00
parent bb7bac3dee
commit 589b79c8cd
5 changed files with 36 additions and 19 deletions
+10 -4
View File
@@ -309,7 +309,7 @@ func (r *sshRunner) IsAlive(ctx context.Context, job *TrainingJob) (bool, error)
}
out, err := r.runCmd(ctx, job, fmt.Sprintf("kill -0 %d 2>/dev/null && echo alive || echo dead", pid))
if err != nil {
return false, nil // 连接故障按"状态未知"处理,不误判任务结束
return false, err // 连接故障 = 状态未知,交上层处理,不吞错
}
return strings.TrimSpace(out) == "alive", nil
}
@@ -330,9 +330,15 @@ func (r *sshRunner) FetchLogTail(ctx context.Context, job *TrainingJob) (string,
}
func (r *sshRunner) FetchResult(ctx context.Context, job *TrainingJob) (string, error) {
out, err := r.runCmd(ctx, job, fmt.Sprintf("cat %s/results/%d.json 2>/dev/null", job.Workdir, job.TaskId))
if err != nil || out == "" {
return "", nil // 文件不存在 = 仍在跑
// if -f 区分「结果文件未就绪」(("", nil))与 SSH 连接/命令真实失败(("", err)):
// 原 cat 2>/dev/null 两者混为一谈,连接故障会被当成"文件不存在=仍在跑"而吞掉错误
path := filepath.Join(job.Workdir, "results", fmt.Sprintf("%d.json", job.TaskId))
out, err := r.runCmd(ctx, job, fmt.Sprintf("if [ -f %s ]; then cat %s; else echo __NO_RESULT__; fi", path, path))
if err != nil {
return "", err
}
if strings.TrimSpace(out) == "__NO_RESULT__" {
return "", nil
}
return out, nil
}