From 5eb57427fcdf77bae326371b9d0e65cfcc3c2a14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Tue, 18 Jul 2023 15:55:51 +0200 Subject: [PATCH] Manager: better logging of schedule changes Log more details of schedule changes, from within the sleep scheduler (instead of the API implementation). --- .../manager/api_impl/worker_sleep_schedule.go | 5 ++--- .../sleep_scheduler/sleep_scheduler.go | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/internal/manager/api_impl/worker_sleep_schedule.go b/internal/manager/api_impl/worker_sleep_schedule.go index 8408c52f..5bf902ee 100644 --- a/internal/manager/api_impl/worker_sleep_schedule.go +++ b/internal/manager/api_impl/worker_sleep_schedule.go @@ -65,11 +65,11 @@ func (f *Flamenco) SetWorkerSleepSchedule(e echo.Context, workerUUID string) err DaysOfWeek: schedule.DaysOfWeek, } if err := dbSchedule.StartTime.Scan(schedule.StartTime); err != nil { - logger.Warn().Err(err).Msg("bad request received, cannot parse schedule start time") + logger.Warn().Interface("schedule", schedule).Err(err).Msg("bad request received, cannot parse schedule start time") return sendAPIError(e, http.StatusBadRequest, "invalid format for schedule start time") } if err := dbSchedule.EndTime.Scan(schedule.EndTime); err != nil { - logger.Warn().Err(err).Msg("bad request received, cannot parse schedule end time") + logger.Warn().Interface("schedule", schedule).Err(err).Msg("bad request received, cannot parse schedule end time") return sendAPIError(e, http.StatusBadRequest, "invalid format for schedule end time") } @@ -84,6 +84,5 @@ func (f *Flamenco) SetWorkerSleepSchedule(e echo.Context, workerUUID string) err return sendAPIError(e, http.StatusInternalServerError, "error fetching sleep schedule: %v", err) } - logger.Info().Interface("schedule", schedule).Msg("worker sleep schedule updated") return e.NoContent(http.StatusNoContent) } diff --git a/internal/manager/sleep_scheduler/sleep_scheduler.go b/internal/manager/sleep_scheduler/sleep_scheduler.go index d67028c0..7d6189f4 100644 --- a/internal/manager/sleep_scheduler/sleep_scheduler.go +++ b/internal/manager/sleep_scheduler/sleep_scheduler.go @@ -9,6 +9,7 @@ import ( "time" "github.com/benbjohnson/clock" + "github.com/rs/zerolog" "github.com/rs/zerolog/log" "git.blender.org/flamenco/internal/manager/persistence" @@ -80,6 +81,11 @@ func (ss *SleepScheduler) SetSchedule(ctx context.Context, workerUUID string, sc return fmt.Errorf("persisting sleep schedule of worker %s: %w", workerUUID, err) } + logger := addLoggerFields(zerolog.Ctx(ctx), schedule) + logger.Info(). + Str("worker", schedule.Worker.Identifier()). + Msg("sleep scheduler: new schedule for worker") + return ss.ApplySleepSchedule(ctx, schedule) } @@ -239,3 +245,19 @@ func (ss *SleepScheduler) mayUpdateWorker(worker *persistence.Worker) bool { shouldSkip := skipWorkersInStatus[worker.Status] return !shouldSkip } + +func addLoggerFields(logger *zerolog.Logger, schedule *persistence.SleepSchedule) zerolog.Logger { + logCtx := logger.With() + + if schedule.Worker != nil { + logCtx = logCtx.Str("worker", schedule.Worker.Identifier()) + } + + logCtx = logCtx. + Bool("isActive", schedule.IsActive). + Str("daysOfWeek", schedule.DaysOfWeek). + Stringer("startTime", schedule.StartTime). + Stringer("endTime", schedule.EndTime) + + return logCtx.Logger() +}