From 59eee119894caf775ed1f45285f4aeb456536ee4 Mon Sep 17 00:00:00 2001 From: shreyas-goenka <88374338+shreyas-goenka@users.noreply.github.com> Date: Tue, 18 Apr 2023 14:58:20 +0200 Subject: [PATCH] Log job errors using progress logger (#337) ## Changes This PR logs job errors using the progress logger ## Tests Manually --- bundle/run/job.go | 3 +++ bundle/run/progress/job_events.go | 31 ++++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/bundle/run/job.go b/bundle/run/job.go index 2ba82fc4c..57bac5311 100644 --- a/bundle/run/job.go +++ b/bundle/run/job.go @@ -133,6 +133,9 @@ func (r *jobRunner) logFailedTasks(ctx context.Context, runId int64) { log.Errorf(ctx, "task %s failed. Unable to fetch error trace: %s", red(task.TaskKey), err) continue } + if progressLogger, ok := cmdio.FromContext(ctx); ok { + progressLogger.Log(progress.NewTaskErrorEvent(task.TaskKey, taskInfo.Error, taskInfo.ErrorTrace)) + } log.Errorf(ctx, "Task %s failed!\nError:\n%s\nTrace:\n%s", red(task.TaskKey), taskInfo.Error, taskInfo.ErrorTrace) } else { diff --git a/bundle/run/progress/job_events.go b/bundle/run/progress/job_events.go index 97463538e..26a15a301 100644 --- a/bundle/run/progress/job_events.go +++ b/bundle/run/progress/job_events.go @@ -1,6 +1,35 @@ package progress -import "fmt" +import ( + "fmt" + "strings" +) + +type TaskErrorEvent struct { + TaskKey string `json:"task_key"` + Error string `json:"error"` + ErrorTrace string `json:"error_trace"` +} + +func NewTaskErrorEvent(taskKey, errorMessage, errorTrace string) *TaskErrorEvent { + return &TaskErrorEvent{ + TaskKey: taskKey, + Error: errorMessage, + ErrorTrace: errorTrace, + } +} + +func (event *TaskErrorEvent) String() string { + result := strings.Builder{} + result.WriteString(fmt.Sprintf("Task %s FAILED:\n", event.TaskKey)) + result.WriteString(event.Error + "\n") + result.WriteString(event.ErrorTrace + "\n") + return result.String() +} + +func (event *TaskErrorEvent) IsInplaceSupported() bool { + return false +} type JobRunUrlEvent struct { Type string `json:"type"`