From 2ca8858c28d64909a83e02d10bac2e8e6029c2c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Tue, 1 Feb 2022 10:16:10 +0100 Subject: [PATCH] Only update status field in DB when worker changes status --- internal/manager/api_impl/api_impl.go | 2 +- internal/manager/api_impl/workers.go | 6 +++--- internal/manager/persistence/workers.go | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/manager/api_impl/api_impl.go b/internal/manager/api_impl/api_impl.go index 380c1240..d9341e26 100644 --- a/internal/manager/api_impl/api_impl.go +++ b/internal/manager/api_impl/api_impl.go @@ -42,7 +42,7 @@ type PersistenceService interface { CreateWorker(ctx context.Context, w *persistence.Worker) error FetchWorker(ctx context.Context, uuid string) (*persistence.Worker, error) - SaveWorker(ctx context.Context, w *persistence.Worker) error + SaveWorkerStatus(ctx context.Context, w *persistence.Worker) error } type JobCompiler interface { diff --git a/internal/manager/api_impl/workers.go b/internal/manager/api_impl/workers.go index a866145d..b2748ed6 100644 --- a/internal/manager/api_impl/workers.go +++ b/internal/manager/api_impl/workers.go @@ -92,7 +92,7 @@ func (f *Flamenco) SignOn(e echo.Context) error { w := requestWorkerOrPanic(e) w.Status = api.WorkerStatusStarting - err = f.persist.SaveWorker(e.Request().Context(), w) + err = f.persist.SaveWorkerStatus(e.Request().Context(), w) if err != nil { logger.Warn().Err(err). Str("newStatus", string(w.Status)). @@ -125,7 +125,7 @@ func (f *Flamenco) SignOff(e echo.Context) error { // TODO: check whether we should pass the request context here, or a generic // background context, as this should be stored even when the HTTP connection // is aborted. - err = f.persist.SaveWorker(e.Request().Context(), w) + err = f.persist.SaveWorkerStatus(e.Request().Context(), w) if err != nil { logger.Warn(). Err(err). @@ -159,7 +159,7 @@ func (f *Flamenco) WorkerStateChanged(e echo.Context) error { w := requestWorkerOrPanic(e) w.Status = req.Status - err = f.persist.SaveWorker(e.Request().Context(), w) + err = f.persist.SaveWorkerStatus(e.Request().Context(), w) if err != nil { logger.Warn().Err(err). Str("newStatus", string(w.Status)). diff --git a/internal/manager/persistence/workers.go b/internal/manager/persistence/workers.go index 5c80d605..45653440 100644 --- a/internal/manager/persistence/workers.go +++ b/internal/manager/persistence/workers.go @@ -60,8 +60,8 @@ func (db *DB) FetchWorker(ctx context.Context, uuid string) (*Worker, error) { return &w, nil } -func (db *DB) SaveWorker(ctx context.Context, w *Worker) error { - if err := db.gormDB.Save(w).Error; err != nil { +func (db *DB) SaveWorkerStatus(ctx context.Context, w *Worker) error { + if err := db.gormDB.Model(w).Updates(Worker{Status: w.Status}).Error; err != nil { return fmt.Errorf("error saving worker: %v", err) } return nil