mirror of
https://github.com/coder/coder.git
synced 2025-07-08 11:39:50 +00:00
Implement strict prebuilds eligibility
See https://github.com/coder/internal/issues/372 Signed-off-by: Danny Kopping <danny@coder.com>
This commit is contained in:
@ -6,6 +6,9 @@ WITH
|
||||
tvp_curr.id AS current_preset_id,
|
||||
tvp_desired.id AS desired_preset_id,
|
||||
COUNT(*) AS count,
|
||||
SUM(CASE
|
||||
WHEN p.lifecycle_state = 'ready'::workspace_agent_lifecycle_state THEN 1
|
||||
ELSE 0 END) AS eligible,
|
||||
STRING_AGG(p.id::text, ',') AS ids
|
||||
FROM workspace_prebuilds p
|
||||
INNER JOIN workspace_latest_build b ON b.workspace_id = p.id
|
||||
@ -56,6 +59,8 @@ SELECT t.template_id,
|
||||
ELSE '' END)::text AS running_prebuild_ids,
|
||||
COALESCE(MAX(CASE WHEN t.using_active_version THEN p.count ELSE 0 END),
|
||||
0)::int AS actual, -- running prebuilds for active version
|
||||
COALESCE(MAX(CASE WHEN t.using_active_version THEN p.eligible ELSE 0 END),
|
||||
0)::int AS eligible, -- prebuilds which can be claimed
|
||||
MAX(CASE WHEN t.using_active_version THEN t.desired_instances ELSE 0 END)::int AS desired, -- we only care about the active version's desired instances
|
||||
COALESCE(MAX(CASE
|
||||
WHEN p.template_version_id = t.template_version_id AND
|
||||
@ -106,6 +111,7 @@ WHERE w.id IN (SELECT p.id
|
||||
AND pj.job_status IN ('succeeded'::provisioner_job_status))
|
||||
AND b.template_version_id = t.active_version_id
|
||||
AND b.template_version_preset_id = @preset_id::uuid
|
||||
AND p.lifecycle_state = 'ready'::workspace_agent_lifecycle_state
|
||||
ORDER BY random()
|
||||
LIMIT 1 FOR UPDATE OF p SKIP LOCKED)
|
||||
RETURNING w.id, w.name;
|
||||
|
Reference in New Issue
Block a user