diff --git a/internal/runner/nomad_manager.go b/internal/runner/nomad_manager.go index ac3c79a..c0d2ab3 100644 --- a/internal/runner/nomad_manager.go +++ b/internal/runner/nomad_manager.go @@ -146,6 +146,11 @@ func (m *NomadRunnerManager) onAllocationAdded(alloc *nomadApi.Allocation, start return } + if _, ok := m.usedRunners.Get(alloc.JobID); ok { + log.WithField("id", alloc.JobID).Debug("Started Runner is already in use") + return + } + environmentID, err := nomad.EnvironmentIDFromRunnerID(alloc.JobID) if err != nil { log.WithError(err).Warn("Allocation could not be added") diff --git a/internal/runner/nomad_manager_test.go b/internal/runner/nomad_manager_test.go index 2789dcf..6056a72 100644 --- a/internal/runner/nomad_manager_test.go +++ b/internal/runner/nomad_manager_test.go @@ -321,19 +321,29 @@ func (s *ManagerTestSuite) TestOnAllocationAdded() { s.True(ok) mockIdleRunners(environment.(*ExecutionEnvironmentMock)) + _, ok = environment.Sample() + s.Require().False(ok) + alloc := &nomadApi.Allocation{ JobID: tests.DefaultRunnerID, AllocatedResources: nil, } s.nomadRunnerManager.onAllocationAdded(alloc, 0) - runner, ok := environment.Sample() - s.True(ok) + runner, err := s.nomadRunnerManager.Claim(defaultEnvironmentID, defaultInactivityTimeout) + s.NoError(err) nomadJob, ok := runner.(*NomadJob) s.True(ok) s.Equal(nomadJob.id, tests.DefaultRunnerID) s.Empty(nomadJob.portMappings) + + s.Run("but not again", func() { + s.nomadRunnerManager.onAllocationAdded(alloc, 0) + runner, err = s.nomadRunnerManager.Claim(defaultEnvironmentID, defaultInactivityTimeout) + s.Error(err) + }) }) + s.nomadRunnerManager.usedRunners.Purge() s.Run("with mapped ports", func() { environment, ok := s.nomadRunnerManager.environments.Get(tests.DefaultEnvironmentIDAsString) s.True(ok) diff --git a/pkg/monitoring/influxdb2_middleware.go b/pkg/monitoring/influxdb2_middleware.go index a566d73..e1efeba 100644 --- a/pkg/monitoring/influxdb2_middleware.go +++ b/pkg/monitoring/influxdb2_middleware.go @@ -166,7 +166,7 @@ func WriteInfluxPoint(p *write.Point) { for _, field := range p.FieldList() { entry = entry.WithField(field.Key, field.Value) } - entry.Debug("Influx data point") + entry.Trace("Influx data point") } }