Mark runner as used now asynchronously.

This commit is contained in:
Maximilian Paß
2021-10-22 14:54:50 +02:00
parent 055fa43227
commit ba6e7035fa
3 changed files with 31 additions and 7 deletions

View File

@@ -141,23 +141,28 @@ func (m *NomadRunnerManager) Claim(environmentID dto.EnvironmentID, duration int
if !ok {
return nil, ErrUnknownExecutionEnvironment
}
log.Debug("Before Sample")
runner, ok := environment.Sample(m.apiClient)
if !ok {
return nil, ErrNoRunnersAvailable
}
m.usedRunners.Add(runner)
log.Debug("Before Mark Runner As Used")
err := m.apiClient.MarkRunnerAsUsed(runner.ID(), duration)
if err != nil {
return nil, fmt.Errorf("can't mark runner as used: %w", err)
}
log.Debug("After Mark Runner As Used")
go m.markRunnerAsUsed(runner, duration)
runner.SetupTimeout(time.Duration(duration) * time.Second)
return runner, nil
}
func (m *NomadRunnerManager) markRunnerAsUsed(runner Runner, timeoutDuration int) {
err := m.apiClient.MarkRunnerAsUsed(runner.ID(), timeoutDuration)
if err != nil {
err = m.Return(runner)
if err != nil {
log.WithError(err).WithField("runnerID", runner.ID()).Error("can't mark runner as used and can't return runner")
}
}
}
func (m *NomadRunnerManager) Get(runnerID string) (Runner, error) {
runner, ok := m.usedRunners.Get(runnerID)
if !ok {