runprog: ensure alway re-evaluate

related #14
This commit is contained in:
criyle 2025-03-14 02:45:32 -04:00
parent 98f24cf60a
commit ea0b084794

View File

@ -432,13 +432,6 @@ func start() (*runner.Result, error) {
return nil, fmt.Errorf("cgroup cpu: %v", err) return nil, fmt.Errorf("cgroup cpu: %v", err)
} else { } else {
rt.Time = time.Duration(cpu) rt.Time = time.Duration(cpu)
if rt.Status == runner.StatusTimeLimitExceeded || rt.Status == runner.StatusNormal {
if rt.Time > limit.TimeLimit {
rt.Status = runner.StatusTimeLimitExceeded
} else {
rt.Status = runner.StatusNormal
}
}
} }
// max memory usage may not exist in cgroup v2 // max memory usage may not exist in cgroup v2
memory, err := cg.MemoryMaxUsage() memory, err := cg.MemoryMaxUsage()
@ -446,13 +439,6 @@ func start() (*runner.Result, error) {
return nil, fmt.Errorf("cgroup memory: %v", err) return nil, fmt.Errorf("cgroup memory: %v", err)
} else if err == nil { } else if err == nil {
rt.Memory = runner.Size(memory) rt.Memory = runner.Size(memory)
if rt.Status == runner.StatusMemoryLimitExceeded || rt.Status == runner.StatusNormal {
if rt.Memory > limit.MemoryLimit {
rt.Status = runner.StatusMemoryLimitExceeded
} else {
rt.Status = runner.StatusNormal
}
}
} }
procPeak, err := cg.ProcessPeak() procPeak, err := cg.ProcessPeak()
if err != nil && !errors.Is(err, os.ErrNotExist) { if err != nil && !errors.Is(err, os.ErrNotExist) {
@ -463,6 +449,20 @@ func start() (*runner.Result, error) {
debug("cgroup: cpu: ", cpu, " memory: ", memory, " procPeak: ", procPeak) debug("cgroup: cpu: ", cpu, " memory: ", memory, " procPeak: ", procPeak)
debug("cgroup:", rt) debug("cgroup:", rt)
} }
if rt.Status == runner.StatusTimeLimitExceeded || rt.Status == runner.StatusNormal {
if rt.Time > limit.TimeLimit {
rt.Status = runner.StatusTimeLimitExceeded
} else {
rt.Status = runner.StatusNormal
}
}
if rt.Status == runner.StatusMemoryLimitExceeded || rt.Status == runner.StatusNormal {
if rt.Memory > limit.MemoryLimit {
rt.Status = runner.StatusMemoryLimitExceeded
} else {
rt.Status = runner.StatusNormal
}
}
return &rt, nil return &rt, nil
} }