From 75cbf3e4ddbe4b7dd8e694842856325bdfc5b69f Mon Sep 17 00:00:00 2001 From: Nikola Jokic Date: Fri, 24 Apr 2026 10:23:04 +0200 Subject: [PATCH] Fix job execution duration when runner assign time is not set --- cmd/ghalistener/metrics/metrics.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cmd/ghalistener/metrics/metrics.go b/cmd/ghalistener/metrics/metrics.go index e35df92f67..913a802e5d 100644 --- a/cmd/ghalistener/metrics/metrics.go +++ b/cmd/ghalistener/metrics/metrics.go @@ -496,7 +496,13 @@ func (e *exporter) RecordJobCompleted(msg *scaleset.JobCompleted) { l := e.completedJobLabels(msg) e.incCounter(MetricCompletedJobsTotal, l) - executionDuration := msg.FinishTime.Unix() - msg.RunnerAssignTime.Unix() + // If the runner assign time is not set, it means that the job is never picked up by the runner. + // Set execution duration to 0, to observe that the job is completed without being executed. + var executionDuration int64 + if !msg.RunnerAssignTime.IsZero() { + executionDuration = msg.FinishTime.Unix() - msg.RunnerAssignTime.Unix() + } + e.observeHistogram(MetricJobExecutionDurationSeconds, l, float64(executionDuration)) }