diff --git a/cloud/tasks/collect_lister_metrics_task.go b/cloud/tasks/collect_lister_metrics_task.go index efb5da4094b..6b32be6cff4 100644 --- a/cloud/tasks/collect_lister_metrics_task.go +++ b/cloud/tasks/collect_lister_metrics_task.go @@ -51,30 +51,33 @@ func (c *collectListerMetricsTask) Run( ticker := time.NewTicker(c.metricsCollectionInterval) defer ticker.Stop() - for range ticker.C { - for _, taskStatus := range taskStatuses { - err := c.collectTasksMetrics( - ctx, - func(context.Context) ([]storage.TaskInfo, error) { - return c.storage.ListTasksWithStatus( - ctx, - taskStatus, - ) - }, - taskStatus, - ) + for { + select { + case <-ctx.Done(): + return ctx.Err() + case <-ticker.C: + for _, taskStatus := range taskStatuses { + err := c.collectTasksMetrics( + ctx, + func(context.Context) ([]storage.TaskInfo, error) { + return c.storage.ListTasksWithStatus( + ctx, + taskStatus, + ) + }, + taskStatus, + ) + if err != nil { + return err + } + } + + err := c.collectHangingTasksMetrics(ctx) if err != nil { return err } } - - err := c.collectHangingTasksMetrics(ctx) - if err != nil { - return err - } } - - return nil } func (c *collectListerMetricsTask) Cancel(