From c5718b5ffc5883f8ec41f08e572ee05e6fc4ac60 Mon Sep 17 00:00:00 2001 From: Maximilian Pass <22845248+mpass99@users.noreply.github.com> Date: Thu, 12 Sep 2024 10:47:29 +0200 Subject: [PATCH] Optimize SetRunnerMetaUsed to send a second request to Nomad only when the meta values change. --- internal/nomad/nomad.go | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/internal/nomad/nomad.go b/internal/nomad/nomad.go index 37763d4b..22307019 100644 --- a/internal/nomad/nomad.go +++ b/internal/nomad/nomad.go @@ -176,21 +176,29 @@ func (a *APIClient) LoadRunnerJobs(environmentID dto.EnvironmentID) ([]*nomadApi } func (a *APIClient) SetRunnerMetaUsed(runnerID string, used bool, duration int) error { + newMetaUsedValue := ConfigMetaUsedValue + if !used { + newMetaUsedValue = ConfigMetaUnusedValue + } + newMetaTimeoutValue := strconv.Itoa(duration) + job, err := a.job(runnerID) if err != nil { return fmt.Errorf("couldn't retrieve job info: %w", err) } configTaskGroup := FindAndValidateConfigTaskGroup(job) - if used { - configTaskGroup.Meta[ConfigMetaUsedKey] = ConfigMetaUsedValue - configTaskGroup.Meta[ConfigMetaTimeoutKey] = strconv.Itoa(duration) - } else { - configTaskGroup.Meta[ConfigMetaUsedKey] = ConfigMetaUnusedValue - } + metaUsedDiffers := configTaskGroup.Meta[ConfigMetaUsedKey] != newMetaUsedValue + metaTimeoutDiffers := configTaskGroup.Meta[ConfigMetaTimeoutKey] != newMetaTimeoutValue - _, err = a.RegisterNomadJob(job) - if err != nil { - return fmt.Errorf("couldn't update runner config: %w", err) + if metaUsedDiffers || (used && metaTimeoutDiffers) { + configTaskGroup.Meta[ConfigMetaUsedKey] = newMetaUsedValue + if used { + configTaskGroup.Meta[ConfigMetaTimeoutKey] = newMetaTimeoutValue + } + _, err = a.RegisterNomadJob(job) + if err != nil { + return fmt.Errorf("couldn't update runner config: %w", err) + } } return nil }