From 8b322e84f88795c98043c02a56f722bab4c355c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Thu, 9 Jan 2025 14:45:28 +0100 Subject: [PATCH] Manager: prevent error when fetching task that was never assigned Prevent an error when fetching a task that was never assigned to a worker. The error: ``` WRN error fetching task worker error="fetching worker : worker not found: sql: no rows in result set" ``` --- internal/manager/api_impl/jobs_query.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/internal/manager/api_impl/jobs_query.go b/internal/manager/api_impl/jobs_query.go index ab9b8186..f72da691 100644 --- a/internal/manager/api_impl/jobs_query.go +++ b/internal/manager/api_impl/jobs_query.go @@ -138,15 +138,17 @@ func (f *Flamenco) FetchTask(e echo.Context, taskID string) error { } apiTask := taskJobWorkertoAPI(taskJobWorker) - // Fetch the worker. TODO: get rid of this conversion, just include the - // worker's UUID and let the caller fetch the worker info themselves if - // necessary. - taskWorker, err := f.persist.FetchWorker(ctx, taskJobWorker.WorkerUUID) - if err != nil { - logger.Warn().Err(err).Msg("error fetching task worker") - return sendAPIError(e, http.StatusInternalServerError, "error fetching task worker") + if taskJobWorker.WorkerUUID != "" { + // Fetch the worker. TODO: get rid of this conversion, just include the + // worker's UUID and let the caller fetch the worker info themselves if + // necessary. + taskWorker, err := f.persist.FetchWorker(ctx, taskJobWorker.WorkerUUID) + if err != nil { + logger.Warn().Err(err).Msg("error fetching task worker") + return sendAPIError(e, http.StatusInternalServerError, "error fetching task worker") + } + apiTask.Worker = workerToTaskWorker(taskWorker) } - apiTask.Worker = workerToTaskWorker(taskWorker) // Fetch & convert the failure list. failedWorkers, err := f.persist.FetchTaskFailureList(ctx, &taskJobWorker.Task)