From f7339570ae9c92ff37f07f79f9c5c17a61c55d60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Pa=C3=9F?= <22845248+mpass99@users.noreply.github.com> Date: Sun, 21 May 2023 18:52:57 +0100 Subject: [PATCH] Fix increased prewarming pool size by checking the number of required runners before creating an additional runner. --- internal/environment/nomad_environment.go | 4 +++- internal/environment/nomad_environment_test.go | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/internal/environment/nomad_environment.go b/internal/environment/nomad_environment.go index c27b232..50d213d 100644 --- a/internal/environment/nomad_environment.go +++ b/internal/environment/nomad_environment.go @@ -243,7 +243,7 @@ func (n *NomadEnvironment) ApplyPrewarmingPoolSize() error { func (n *NomadEnvironment) Sample() (runner.Runner, bool) { r, ok := n.idleRunners.Sample() - if ok { + if ok && n.idleRunners.Length() < n.PrewarmingPoolSize() { go func() { err := util.RetryExponential(time.Second, func() error { return n.createRunner(false) @@ -252,6 +252,8 @@ func (n *NomadEnvironment) Sample() (runner.Runner, bool) { log.WithError(err).WithField("environmentID", n.ID()).Error("Couldn't create new runner for claimed one") } }() + } else if ok { + log.WithField("environment", n.ID().ToString()).Warn("Too many idle runner") } return r, ok } diff --git a/internal/environment/nomad_environment_test.go b/internal/environment/nomad_environment_test.go index 4dee667..f94e22c 100644 --- a/internal/environment/nomad_environment_test.go +++ b/internal/environment/nomad_environment_test.go @@ -178,6 +178,7 @@ func TestTwoSampleAddExactlyTwoRunners(t *testing.T) { _, job := helpers.CreateTemplateJob() environment := &NomadEnvironment{apiMock, templateEnvironmentJobHCL, job, storage.NewLocalStorage[runner.Runner](), nil, nil} + environment.SetPrewarmingPoolSize(2) runner1 := &runner.RunnerMock{} runner1.On("ID").Return(tests.DefaultRunnerID) runner2 := &runner.RunnerMock{}