From cde2513062e7c6dfb7184f448c0819441d6c5915 Mon Sep 17 00:00:00 2001 From: Giridharan Ramasamy <46867712+giri-vsr@users.noreply.github.com> Date: Mon, 29 Apr 2024 23:59:11 +0530 Subject: [PATCH] Monitor: IncrementJob in case of skipped job run (#715) Co-authored-by: John Roesler --- executor.go | 17 +++++++++++------ monitor.go | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/executor.go b/executor.go index cf6cc01..793925a 100644 --- a/executor.go +++ b/executor.go @@ -333,12 +333,14 @@ func (e *executor) runJob(j internalJob, jIn jobIn) { if e.elector != nil { if err := e.elector.IsLeader(j.ctx); err != nil { e.sendOutForRescheduling(&jIn) + e.incrementJobCounter(j, Skip) return } } else if j.locker != nil { lock, err := j.locker.Lock(j.ctx, j.name) if err != nil { e.sendOutForRescheduling(&jIn) + e.incrementJobCounter(j, Skip) return } defer func() { _ = lock.Unlock(j.ctx) }() @@ -346,6 +348,7 @@ func (e *executor) runJob(j internalJob, jIn jobIn) { lock, err := e.locker.Lock(j.ctx, j.name) if err != nil { e.sendOutForRescheduling(&jIn) + e.incrementJobCounter(j, Skip) return } defer func() { _ = lock.Unlock(j.ctx) }() @@ -365,14 +368,16 @@ func (e *executor) runJob(j internalJob, jIn jobIn) { } if err != nil { _ = callJobFuncWithParams(j.afterJobRunsWithError, j.id, j.name, err) - if e.monitor != nil { - e.monitor.IncrementJob(j.id, j.name, j.tags, Fail) - } + e.incrementJobCounter(j, Fail) } else { _ = callJobFuncWithParams(j.afterJobRuns, j.id, j.name) - if e.monitor != nil { - e.monitor.IncrementJob(j.id, j.name, j.tags, Success) - } + e.incrementJobCounter(j, Success) + } +} + +func (e *executor) incrementJobCounter(j internalJob, status JobStatus) { + if e.monitor != nil { + e.monitor.IncrementJob(j.id, j.name, j.tags, status) } } diff --git a/monitor.go b/monitor.go index 5491371..ecf2880 100644 --- a/monitor.go +++ b/monitor.go @@ -13,6 +13,7 @@ type JobStatus string const ( Fail JobStatus = "fail" Success JobStatus = "success" + Skip JobStatus = "skip" ) // Monitor represents the interface to collect jobs metrics.