diff --git a/server/channels/jobs/jobs.go b/server/channels/jobs/jobs.go index 0a24411826d..efdc7a417d1 100644 --- a/server/channels/jobs/jobs.go +++ b/server/channels/jobs/jobs.go @@ -122,6 +122,11 @@ func (srv *JobServer) SetJobWarning(job *model.Job) *model.AppError { if _, err := srv.Store.Job().UpdateStatus(job.Id, model.JobStatusWarning); err != nil { return model.NewAppError("SetJobWarning", "app.job.update.app_error", nil, "", http.StatusInternalServerError).Wrap(err) } + + if srv.metrics != nil { + srv.metrics.DecrementJobActive(job.Type) + } + return nil } diff --git a/server/channels/jobs/jobs_test.go b/server/channels/jobs/jobs_test.go index af71ba27fc3..ae003ad6b1d 100644 --- a/server/channels/jobs/jobs_test.go +++ b/server/channels/jobs/jobs_test.go @@ -208,7 +208,26 @@ func TestSetJobWarning(t *testing.T) { }) t.Run("status updated", func(t *testing.T) { - jobServer, mockStore, _ := makeJobServer(t) + jobServer, mockStore, mockMetrics := makeJobServer(t) + + job := &model.Job{ + Id: "job_id", + Type: "job_type", + } + retJob := *job + retJob.Status = model.JobStatusWarning + + mockStore.JobStore. + On("UpdateStatus", "job_id", model.JobStatusWarning). + Return(&retJob, nil) + mockMetrics.On("DecrementJobActive", "job_type").Once() + + err := jobServer.SetJobWarning(job) + require.Nil(t, err) + }) + + t.Run("status updated, nil metrics service", func(t *testing.T) { + jobServer, mockStore := makeTeamEditionJobServer(t) job := &model.Job{ Id: "job_id",