From 628847388ddbf5422201d041ef466e3a1f3de485 Mon Sep 17 00:00:00 2001 From: speatzle Date: Tue, 21 May 2024 16:57:55 +0200 Subject: [PATCH] fix task error check --- server/worker.go | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/server/worker.go b/server/worker.go index 47e4c39..c3b2141 100644 --- a/server/worker.go +++ b/server/worker.go @@ -202,27 +202,29 @@ func updateWorkerTaskStatus(ctx context.Context) { var ts types.TaskStatus _, err := rpcServer.Call(ctx, w.Conn, "task-status", tsr, &ts) - // Find better way to compare errors which where send via websocket - if strings.HasSuffix(err.Error(), constants.ErrTaskDoesNotExist.Error()) { - // Worker says it does not know of this task, mark it failed so that we don't asks the worker about it again and again - slog.ErrorContext(ctx, "Task is unknown by worker, Failing...", "err", err, "id", taskID) - _, err = db.Exec(ctx, "UPDATE tasks SET status = $2, log = log || $3 WHERE id = $1", taskID, constants.TASK_STATUS_FAILED, []string{"Task Failed because it is unknown to Assigned Worker"}) - if err != nil { - slog.ErrorContext(ctx, "Updating Failed Task Status", "err", err) + if err != nil { + // Find better way to compare errors which where send via websocket + if strings.HasSuffix(err.Error(), constants.ErrTaskDoesNotExist.Error()) { + // Worker says it does not know of this task, mark it failed so that we don't asks the worker about it again and again + slog.ErrorContext(ctx, "Task is unknown by worker, Failing...", "err", err, "id", taskID) + _, err = db.Exec(ctx, "UPDATE tasks SET status = $2, log = log || $3 WHERE id = $1", taskID, constants.TASK_STATUS_FAILED, []string{"Task Failed because it is unknown to Assigned Worker"}) + if err != nil { + slog.ErrorContext(ctx, "Updating Failed Task Status", "err", err) + return + } + slog.Info("Updating task done", "id", taskID, "status", constants.TASK_STATUS_FAILED) + + return + } else { + slog.ErrorContext(ctx, "Getting Task Status", "err", err) + + _, err = db.Exec(ctx, "UPDATE tasks SET status = $2 WHERE id = $1", taskID, constants.TASK_STATUS_UNKNOWN) + if err != nil { + slog.ErrorContext(ctx, "Updating Unknown Task Status", "err", err) + return + } return } - slog.Info("Updating task done", "id", taskID, "status", constants.TASK_STATUS_FAILED) - - return - } else if err != nil { - slog.ErrorContext(ctx, "Getting Task Status", "err", err) - - _, err = db.Exec(ctx, "UPDATE tasks SET status = $2 WHERE id = $1", taskID, constants.TASK_STATUS_UNKNOWN) - if err != nil { - slog.ErrorContext(ctx, "Updating Unknown Task Status", "err", err) - return - } - return } _, err = db.Exec(ctx, "UPDATE tasks SET status = $2, log = log || $3 WHERE id = $1", taskID, ts.Task.Status, ts.Task.Log)