From 40e555eb96aa7aa967b58af58188edb11ee1383e Mon Sep 17 00:00:00 2001 From: Benoit Sigoure Date: Thu, 8 Jan 2026 20:49:59 +0000 Subject: [PATCH] fix: remove invalid Unlock calls in scaleset worker - Remove Unlock call in handleScaleDown that was called before any lock was acquired - Change defer Unlock to immediate Unlock in consolidateRunnerState loop to avoid holding locks until function exit --- workers/scaleset/scaleset.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/workers/scaleset/scaleset.go b/workers/scaleset/scaleset.go index d8942aa9..32b17ce9 100644 --- a/workers/scaleset/scaleset.go +++ b/workers/scaleset/scaleset.go @@ -566,7 +566,7 @@ func (w *Worker) consolidateRunnerState(runners []params.RunnerReference) error slog.DebugContext(w.ctx, "runner is locked; skipping", "runner_name", runner.Name) continue } - defer locking.Unlock(runner.Name, false) + locking.Unlock(runner.Name, false) if _, ok := providerRunnersByName[runner.Name]; !ok { // The runner is not in the provider anymore. Remove it from the DB. @@ -893,7 +893,6 @@ func (w *Worker) handleScaleDown() { switch runner.RunnerStatus { case params.RunnerTerminated, params.RunnerActive: slog.DebugContext(w.ctx, "runner is not in a valid state; skipping", "runner_name", runner.Name, "runner_status", runner.RunnerStatus) - locking.Unlock(runner.Name, false) continue } locked := locking.TryLock(runner.Name, w.consumerID)