fix job array display issue

This commit is contained in:
Rongsong Shen 2026-04-14 18:23:49 +08:00
parent d9b5c361c2
commit 960ef62342
5 changed files with 290 additions and 15 deletions

View file

@ -1192,8 +1192,8 @@ func (j JobController) RestartJobByID(ctx *gin.Context) {
// Use a concrete type for job
newJob := models.JobInfo{
Unique_JobID: int64(jobID),
JobID: int64(jobID),
ArrayIdx: 0,
JobID: int64(backend.ExtractArrayBaseID(jobID)),
ArrayIdx: backend.ExtractArrayIdx(jobID),
SubmitUser: restarter,
JobStatus: models.JOBSTAT["PEND"],
}
@ -1453,7 +1453,8 @@ func (j JobController) CreateJob(ctx *gin.Context) {
// Build the single JobInfo to submit
job := models.JobInfo{
Unique_JobID: primaryJobID,
JobID: primaryJobID,
JobID: int64(backend.ExtractArrayBaseID(uint64(primaryJobID))),
ArrayIdx: backend.ExtractArrayIdx(uint64(primaryJobID)),
//SubmitTime: time.Now().Unix(), // backend will fill the submit time;
SubmitUser: submitUser,
JobStatus: models.JOBSTAT["PEND"], // new job is pend.
@ -3097,12 +3098,20 @@ func processJobData(rows []utils.OrderMap, pagetoken string) utils.QueryResult {
}
}
// Update job_name if array_idx is not 0
// Update job_name if this is an array job child (including idx=0)
if jobName, exist := row.Data["job_name"]; exist {
if arrayIdx, ok := row.Data["array_idx"].(int); ok && arrayIdx > 0 {
row.Data["job_name"] = fmt.Sprintf("%s[%d]", jobName, arrayIdx)
} else if arrayIdx64, ok := row.Data["array_idx"].(int64); ok && arrayIdx64 > 0 {
row.Data["job_name"] = fmt.Sprintf("%s[%d]", jobName, arrayIdx64)
// Use IsArrayJob to detect array children, which covers
// the first child (idx=0) that the old array_idx > 0 check missed.
var isArray bool
if uid, ok := row.Data["unique_job_id"].(int64); ok {
isArray = backend.IsArrayJob(uint64(uid))
}
if isArray {
if arrayIdx, ok := row.Data["array_idx"].(int); ok {
row.Data["job_name"] = fmt.Sprintf("%s[%d]", jobName, arrayIdx)
} else if arrayIdx64, ok := row.Data["array_idx"].(int64); ok {
row.Data["job_name"] = fmt.Sprintf("%s[%d]", jobName, arrayIdx64)
}
} else {
row.Data["job_name"] = jobName
}