chore: more verbose log
This commit is contained in:
parent
5826b98b95
commit
9286aea36a
@ -19,7 +19,6 @@ func (h *handler) ProblemUpdate(_ context.Context, t *asynq.Task) error {
|
||||
|
||||
if p.Status != e.Success {
|
||||
h.log.Warn("RunnerError", zap.Any("payload", p))
|
||||
return nil
|
||||
}
|
||||
|
||||
status := h.problemService.UpdateVersion(
|
||||
@ -29,7 +28,7 @@ func (h *handler) ProblemUpdate(_ context.Context, t *asynq.Task) error {
|
||||
Bytes: []byte(p.Context),
|
||||
Status: pgtype.Present,
|
||||
},
|
||||
"IsEnabled": true,
|
||||
"IsEnabled": p.Status == e.Success,
|
||||
},
|
||||
)
|
||||
|
||||
|
@ -19,7 +19,6 @@ func (h *handler) SubmitUpdate(_ context.Context, t *asynq.Task) error {
|
||||
|
||||
if p.Status != e.Success {
|
||||
h.log.Warn("RunnerError", zap.Any("payload", p))
|
||||
return nil
|
||||
}
|
||||
|
||||
createData := &status.CreateData{
|
||||
|
@ -22,12 +22,12 @@ func (h *handler) Build(_ context.Context, t *asynq.Task) error {
|
||||
status, ctx := func() (e.Status, string) {
|
||||
url, status := h.storageService.Get(p.StorageKey, time.Second*60*5)
|
||||
if status != e.Success {
|
||||
return e.InternalError, "{}"
|
||||
return e.InternalError, "{\"Message\": \"storage error\"}"
|
||||
}
|
||||
|
||||
config, status := h.runnerService.NewProblem(p.ProblemVersionID, url, true)
|
||||
if status != e.Success {
|
||||
return e.InternalError, "{}"
|
||||
return e.InternalError, "{\"Message\": \"build error: " + status.String() + "\"}"
|
||||
}
|
||||
|
||||
for i := range config.Languages {
|
||||
|
@ -25,7 +25,10 @@ func (h *handler) Judge(_ context.Context, t *asynq.Task) error {
|
||||
h.log.Info("judge", zap.Any("payload", p), zap.String("user", user))
|
||||
|
||||
status, point, ctx := func() (e.Status, int32, runner.JudgeStatus) {
|
||||
systemError := runner.JudgeStatus{Message: "System Error"}
|
||||
systemError := runner.JudgeStatus{
|
||||
Message: "System Error",
|
||||
Tasks: []runner.TaskStatus{{Verdict: runner.VerdictSystemError, Message: "API Error"}},
|
||||
}
|
||||
|
||||
// 1. write user code
|
||||
userCode := filepath.Join(runner.UserDir, user, fmt.Sprintf("%s.%s", user, p.Submission.Language))
|
||||
@ -53,7 +56,7 @@ func (h *handler) Judge(_ context.Context, t *asynq.Task) error {
|
||||
// 3. compile
|
||||
compileResult, status := h.runnerService.Compile(p.ProblemVersionID, user, p.Submission.Language)
|
||||
if status != e.Success {
|
||||
return e.Success, 0, compileResult
|
||||
return e.InternalError, 0, compileResult
|
||||
}
|
||||
|
||||
// 4. run and judge
|
||||
|
@ -30,13 +30,19 @@ func init() {
|
||||
TmpDir = path.Join(Prefix, TmpDir)
|
||||
}
|
||||
|
||||
func (s *service) ProblemExists(version uint) bool {
|
||||
problemPath := filepath.Join(ProblemDir, fmt.Sprintf("%d", version))
|
||||
return file.Exist(problemPath)
|
||||
}
|
||||
|
||||
func (s *service) check(version uint, user string, lang string) e.Status {
|
||||
if !s.ProblemExists(version) {
|
||||
s.log.Info("problem not exists", zap.Uint("version", version))
|
||||
return e.RunnerProblemNotExist
|
||||
}
|
||||
|
||||
if !s.userExists(user, fmt.Sprintf("%s.%s", user, lang)) {
|
||||
userPath := filepath.Join(UserDir, user, fmt.Sprintf("%s.%s", user, lang))
|
||||
if !file.Exist(userPath) {
|
||||
s.log.Info("user program not exists", zap.String("user", user), zap.String("lang", lang))
|
||||
return e.RunnerUserNotExist
|
||||
}
|
||||
@ -44,16 +50,6 @@ func (s *service) check(version uint, user string, lang string) e.Status {
|
||||
return e.Success
|
||||
}
|
||||
|
||||
func (s *service) ProblemExists(version uint) bool {
|
||||
problemPath := filepath.Join(ProblemDir, fmt.Sprintf("%d", version))
|
||||
return file.Exist(problemPath)
|
||||
}
|
||||
|
||||
func (s *service) userExists(user string, name string) bool {
|
||||
userPath := filepath.Join(UserDir, user, name)
|
||||
return file.Exist(userPath)
|
||||
}
|
||||
|
||||
func (s *service) getLangInfo(config *Config, lang string) (configLanguage, bool) {
|
||||
for _, l := range config.Languages {
|
||||
if l.Lang == lang {
|
||||
|
@ -21,7 +21,11 @@ func (s *service) Compile(version uint, user string, lang string) (JudgeStatus,
|
||||
|
||||
config, err := s.ParseConfig(version, true)
|
||||
if err != nil {
|
||||
return JudgeStatus{Message: "parse config failed"}, e.RunnerProblemParseFailed
|
||||
s.log.Error("[compile] parse config failed", zap.Error(err))
|
||||
return JudgeStatus{
|
||||
Message: "parse config failed",
|
||||
Tasks: []TaskStatus{{Verdict: VerdictSystemError, Message: "parse config failed"}},
|
||||
}, e.RunnerProblemParseFailed
|
||||
}
|
||||
|
||||
// 2. prepare judge environment
|
||||
@ -34,7 +38,11 @@ func (s *service) Compile(version uint, user string, lang string) (JudgeStatus,
|
||||
logFile := filepath.Join(workDir, fmt.Sprintf("%s.compile.log", user))
|
||||
log, err := os.Create(logFile)
|
||||
if err != nil {
|
||||
return JudgeStatus{Message: "create log file failed"}, e.RunnerUserCompileFailed
|
||||
s.log.Error("[compile] create log file failed", zap.Error(err))
|
||||
return JudgeStatus{
|
||||
Message: "create log file failed",
|
||||
Tasks: []TaskStatus{{Verdict: VerdictSystemError, Message: "create log file failed"}},
|
||||
}, e.RunnerUserCompileFailed
|
||||
}
|
||||
defer func(log *os.File) {
|
||||
_ = log.Close()
|
||||
@ -75,7 +83,7 @@ func (s *service) Compile(version uint, user string, lang string) (JudgeStatus,
|
||||
Done()
|
||||
|
||||
if err != nil {
|
||||
s.log.Info("compile failed",
|
||||
s.log.Info("[compile] compile failed",
|
||||
zap.Error(err),
|
||||
zap.Uint("version", version),
|
||||
zap.String("user", user),
|
||||
|
@ -40,7 +40,7 @@ func (s *service) loadImage(cfg *depConfig) e.Status {
|
||||
Done()
|
||||
|
||||
if err != nil {
|
||||
s.log.Warn("load image failed", zap.Error(err))
|
||||
s.log.Warn("[deps] load image failed", zap.Error(err))
|
||||
return e.RunnerDepsBuildFailed
|
||||
}
|
||||
|
||||
|
@ -18,13 +18,13 @@ func (s *service) download(version uint, url string) e.Status {
|
||||
|
||||
err := down.Down(zipPath, url)
|
||||
if err != nil {
|
||||
s.log.Error("download problem failed", zap.Error(err))
|
||||
s.log.Error("[new] download problem failed", zap.Error(err))
|
||||
return e.RunnerDownloadFailed
|
||||
}
|
||||
|
||||
err = unzip.Unzip(zipPath, problemPath)
|
||||
if err != nil {
|
||||
s.log.Warn("unzip problem failed", zap.Error(err))
|
||||
s.log.Warn("[new] unzip problem failed", zap.Error(err))
|
||||
return e.RunnerUnzipFailed
|
||||
}
|
||||
|
||||
@ -45,7 +45,7 @@ func (s *service) prebuild(version uint, force bool) e.Status {
|
||||
|
||||
prebuildScript := filepath.Join(ProblemDir, fmt.Sprintf("%d", version), "judge", "prebuild.Makefile")
|
||||
if !file.Exist(prebuildScript) {
|
||||
s.log.Info("prebuild script not found", zap.String("path", prebuildScript), zap.Uint("version", version))
|
||||
s.log.Info("[new] prebuild script not found", zap.String("path", prebuildScript), zap.Uint("version", version))
|
||||
return e.Success
|
||||
}
|
||||
|
||||
@ -69,7 +69,7 @@ func (s *service) prebuild(version uint, force bool) e.Status {
|
||||
err := s.podmanRun(runArgs)
|
||||
|
||||
if err != nil {
|
||||
s.log.Warn("prebuild problem failed", zap.Error(err), zap.Uint("version", version))
|
||||
s.log.Warn("[new] prebuild problem failed", zap.Error(err), zap.Uint("version", version))
|
||||
return e.RunnerProblemPrebuildFailed
|
||||
}
|
||||
|
||||
@ -91,7 +91,7 @@ func (s *service) NewProblem(version uint, url string, force bool) (Config, e.St
|
||||
|
||||
cfg, err := s.ParseConfig(version, false)
|
||||
if err != nil {
|
||||
// TODO: err is dropped here, should return to server: add a new column in problem_version table
|
||||
s.log.Info("[new] parse problem failed", zap.Error(err), zap.Uint("version", version))
|
||||
return Config{}, e.RunnerProblemParseFailed
|
||||
}
|
||||
|
||||
|
@ -75,7 +75,7 @@ func (s *service) problemRun(version uint, user string, lang string, config *Con
|
||||
Done()
|
||||
|
||||
if err != nil {
|
||||
s.log.Info("run failed",
|
||||
s.log.Info("[run] run failed",
|
||||
zap.Error(err),
|
||||
zap.Uint("version", version),
|
||||
zap.String("user", user),
|
||||
@ -138,7 +138,7 @@ func (s *service) problemJudge(version uint, user string, lang string, config *C
|
||||
Done()
|
||||
|
||||
if err != nil {
|
||||
s.log.Info("judge failed",
|
||||
s.log.Info("[judge] judge failed",
|
||||
zap.Error(err),
|
||||
zap.Uint("version", version),
|
||||
zap.String("user", user),
|
||||
|
Loading…
Reference in New Issue
Block a user