Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ require (
github.com/BurntSushi/toml v1.6.0
github.com/alecthomas/chroma/v2 v2.27.0
github.com/bradleyfalzon/ghinstallation/v2 v2.19.0
github.com/cloudbase/garm-provider-common v0.1.9
github.com/cloudbase/garm-provider-common v0.1.10-0.20260627162627-e00d7529cc6f
github.com/felixge/httpsnoop v1.1.0
github.com/gdamore/tcell/v2 v2.13.10
github.com/go-gormigrate/gormigrate/v2 v2.1.6
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04=
github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk=
github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM=
github.com/cloudbase/garm-provider-common v0.1.9 h1:ZL53ma/j7BgMAqW/OJ/jCnx1MUd8hLcYxUTEFb/o/e0=
github.com/cloudbase/garm-provider-common v0.1.9/go.mod h1:8tnJcLXtaMUDEUgX3MGLFEYnMpiCAKaKWPtzNnzEpAE=
github.com/cloudbase/garm-provider-common v0.1.10-0.20260627162627-e00d7529cc6f h1:IalGGcSKBGUd+KFFn2OXO6SMcODyCkSO/SMXtm4nwy8=
github.com/cloudbase/garm-provider-common v0.1.10-0.20260627162627-e00d7529cc6f/go.mod h1:i1KXJVzi5ouzbdu5BXjuA+rqk4nxIBVBEYrKReSERIU=
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
Expand Down
23 changes: 15 additions & 8 deletions runner/pool/pool.go
Original file line number Diff line number Diff line change
Expand Up @@ -1334,7 +1334,7 @@ func (r *basePoolManager) addRunnerToPool(pool params.Pool, aditionalLabels []st
}

if poolInstanceCount >= int64(pool.MaxRunners) {
return fmt.Errorf("max workers (%d) reached for pool %s", pool.MaxRunners, pool.ID)
return runnerErrors.NewNoCapacityError("max workers (%d) reached for pool %s", pool.MaxRunners, pool.ID)
}

if err := r.AddRunner(r.ctx, pool.ID, aditionalLabels); err != nil {
Expand Down Expand Up @@ -1412,8 +1412,6 @@ func (r *basePoolManager) retryFailedInstancesForOnePool(ctx context.Context, po

g, errCtx := errgroup.WithContext(ctx)
for _, instance := range existingInstances {
instance := instance

if instance.Status != commonParams.InstanceError {
continue
}
Expand Down Expand Up @@ -1472,7 +1470,10 @@ func (r *basePoolManager) retryFailedInstancesForOnePool(ctx context.Context, po
ctx, "queueing previously failed instance for retry",
"runner_name", instance.Name)
// Set instance to pending create and wait for retry.
if _, err := r.store.UpdateInstance(r.ctx, instance.Name, updateParams); err != nil {
// Use ForceUpdateInstance() here. It will ignore the instance transition from error to
// something other than a cleanup status (pending_delete/deleting). We don't really want to allow
// transitioning from error directly to "creating" otherwise.
if _, err := r.store.ForceUpdateInstance(r.ctx, instance.Name, updateParams); err != nil {
slog.With(slog.Any("error", err)).ErrorContext(
ctx, "failed to update runner status",
"runner_name", instance.Name)
Expand Down Expand Up @@ -2174,9 +2175,15 @@ func (r *basePoolManager) consumeQueuedJobs() error {
"pool_id", pool.ID,
"job_id", job.WorkflowJobID)
if err := r.addRunnerToPool(pool, jobLabels); err != nil {
slog.With(slog.Any("error", err)).ErrorContext(
r.ctx, "could not add runner to pool",
"pool_id", pool.ID)
if errors.Is(err, runnerErrors.ErrNoCapacity) {
slog.With(slog.Any("error", err)).InfoContext(
r.ctx, "could not add runner to pool",
"pool_id", pool.ID)
} else {
slog.With(slog.Any("error", err)).ErrorContext(
r.ctx, "could not add runner to pool",
"pool_id", pool.ID)
}
continue
}
slog.DebugContext(r.ctx, "a new runner was added as a response to queued job",
Expand All @@ -2187,7 +2194,7 @@ func (r *basePoolManager) consumeQueuedJobs() error {
}

if !runnerCreated {
slog.WarnContext(
slog.InfoContext(
r.ctx, "could not create a runner for job; unlocking",
"job_id", job.WorkflowJobID)
if err := r.store.UnlockJob(r.ctx, job.WorkflowJobID, r.ID()); err != nil {
Expand Down
50 changes: 37 additions & 13 deletions vendor/github.com/cloudbase/garm-provider-common/errors/errors.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion vendor/modules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ github.com/chzyer/readline
# github.com/clipperhouse/uax29/v2 v2.7.0
## explicit; go 1.18
github.com/clipperhouse/uax29/v2/graphemes
# github.com/cloudbase/garm-provider-common v0.1.9
# github.com/cloudbase/garm-provider-common v0.1.10-0.20260627162627-e00d7529cc6f
## explicit; go 1.25.0
github.com/cloudbase/garm-provider-common/cloudconfig
github.com/cloudbase/garm-provider-common/defaults
Expand Down