Create a new runner async after one gets claimed
This commit is contained in:
@ -234,10 +234,12 @@ func (n *NomadEnvironment) UpdateRunnerSpecs(apiClient nomad.ExecutorAPI) error
|
|||||||
func (n *NomadEnvironment) Sample(apiClient nomad.ExecutorAPI) (runner.Runner, bool) {
|
func (n *NomadEnvironment) Sample(apiClient nomad.ExecutorAPI) (runner.Runner, bool) {
|
||||||
r, ok := n.idleRunners.Sample()
|
r, ok := n.idleRunners.Sample()
|
||||||
if ok {
|
if ok {
|
||||||
err := n.createRunner(apiClient)
|
go func() {
|
||||||
if err != nil {
|
err := n.createRunner(apiClient)
|
||||||
log.WithError(err).WithField("environmentID", n.ID()).Error("Couldn't create new runner for claimed one")
|
if err != nil {
|
||||||
}
|
log.WithError(err).WithField("environmentID", n.ID()).Error("Couldn't create new runner for claimed one")
|
||||||
|
}
|
||||||
|
}()
|
||||||
}
|
}
|
||||||
return r, ok
|
return r, ok
|
||||||
}
|
}
|
||||||
|
@ -141,15 +141,18 @@ func (m *NomadRunnerManager) Claim(environmentID dto.EnvironmentID, duration int
|
|||||||
if !ok {
|
if !ok {
|
||||||
return nil, ErrUnknownExecutionEnvironment
|
return nil, ErrUnknownExecutionEnvironment
|
||||||
}
|
}
|
||||||
|
log.Debug("Before Sample")
|
||||||
runner, ok := environment.Sample(m.apiClient)
|
runner, ok := environment.Sample(m.apiClient)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, ErrNoRunnersAvailable
|
return nil, ErrNoRunnersAvailable
|
||||||
}
|
}
|
||||||
m.usedRunners.Add(runner)
|
m.usedRunners.Add(runner)
|
||||||
|
log.Debug("Before Mark Runner As Used")
|
||||||
err := m.apiClient.MarkRunnerAsUsed(runner.ID(), duration)
|
err := m.apiClient.MarkRunnerAsUsed(runner.ID(), duration)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("can't mark runner as used: %w", err)
|
return nil, fmt.Errorf("can't mark runner as used: %w", err)
|
||||||
}
|
}
|
||||||
|
log.Debug("After Mark Runner As Used")
|
||||||
|
|
||||||
runner.SetupTimeout(time.Duration(duration) * time.Second)
|
runner.SetupTimeout(time.Duration(duration) * time.Second)
|
||||||
return runner, nil
|
return runner, nil
|
||||||
|
Reference in New Issue
Block a user