MeasureActionTime is a helper to measure execution time of queue's actions
(action string)
| 249 | |
| 250 | // MeasureActionTime is a helper to measure execution time of queue's actions |
| 251 | func (q *TaskQueue) MeasureActionTime(action string) func() { |
| 252 | if q.metricStorage == nil { |
| 253 | return func() {} |
| 254 | } |
| 255 | |
| 256 | q.measureActionFnOnce.Do(func() { |
| 257 | // TODO: remove this metrics switch |
| 258 | if os.Getenv("QUEUE_ACTIONS_METRICS") == "no" { |
| 259 | q.measureActionFn = func() {} |
| 260 | } else { |
| 261 | q.measureActionFn = measure.Duration(func(d time.Duration) { |
| 262 | q.metricStorage.HistogramObserve(metrics.TasksQueueActionDurationSeconds, d.Seconds(), map[string]string{pkg.MetricKeyQueueName: q.Name, pkg.MetricKeyQueueAction: action}, nil) |
| 263 | }) |
| 264 | } |
| 265 | }) |
| 266 | |
| 267 | return q.measureActionFn |
| 268 | } |
| 269 | |
| 270 | func (q *TaskQueue) GetStatus() string { |
| 271 | defer q.MeasureActionTime("GetStatus")() |