Skip to content

Commit 68b16ff

Browse files
committed
Use max(end)-min(start) as stage timings, not local maximum
Signed-off-by: Danny Kopping <danny@coder.com>
1 parent 28fa2f7 commit 68b16ff

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

coderd/database/migrations/000245_provisioner_job_timings.up.sql

+16-16
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,28 @@ CREATE TABLE provisioner_job_timings
1717
);
1818

1919
CREATE VIEW provisioner_job_stats AS
20-
SELECT pj.id AS job_id,
20+
SELECT pj.id AS job_id,
2121
pj.job_status,
2222
wb.workspace_id,
2323
pj.worker_id,
2424
pj.error,
2525
pj.error_code,
2626
pj.updated_at,
27-
GREATEST(EXTRACT(EPOCH FROM (pj.started_at - pj.created_at)), 0) AS queued_secs,
28-
GREATEST(EXTRACT(EPOCH FROM (pj.completed_at - pj.started_at)), 0) AS completion_secs,
29-
GREATEST(EXTRACT(EPOCH FROM (pj.canceled_at - pj.started_at)), 0) AS canceled_secs,
30-
GREATEST(MAX(CASE
31-
WHEN pjt.stage = 'init'::provisioner_job_timing_stage
32-
THEN EXTRACT(EPOCH FROM (pjt.ended_at - pjt.started_at)) END), 0) AS init_secs,
33-
GREATEST(MAX(CASE
34-
WHEN pjt.stage = 'plan'::provisioner_job_timing_stage
35-
THEN EXTRACT(EPOCH FROM (pjt.ended_at - pjt.started_at)) END), 0) AS plan_secs,
36-
GREATEST(MAX(CASE
37-
WHEN pjt.stage = 'graph'::provisioner_job_timing_stage
38-
THEN EXTRACT(EPOCH FROM (pjt.ended_at - pjt.started_at)) END), 0) AS graph_secs,
39-
GREATEST(MAX(CASE
40-
WHEN pjt.stage = 'apply'::provisioner_job_timing_stage
41-
THEN EXTRACT(EPOCH FROM (pjt.ended_at - pjt.started_at)) END), 0) AS apply_secs
27+
GREATEST(EXTRACT(EPOCH FROM (pj.started_at - pj.created_at)), 0) AS queued_secs,
28+
GREATEST(EXTRACT(EPOCH FROM (pj.completed_at - pj.started_at)), 0) AS completion_secs,
29+
GREATEST(EXTRACT(EPOCH FROM (pj.canceled_at - pj.started_at)), 0) AS canceled_secs,
30+
GREATEST(EXTRACT(EPOCH FROM (
31+
MAX(CASE WHEN pjt.stage = 'init'::provisioner_job_timing_stage THEN pjt.ended_at END) -
32+
MIN(CASE WHEN pjt.stage = 'init'::provisioner_job_timing_stage THEN pjt.started_at END))), 0) AS init_secs,
33+
GREATEST(EXTRACT(EPOCH FROM (
34+
MAX(CASE WHEN pjt.stage = 'plan'::provisioner_job_timing_stage THEN pjt.ended_at END) -
35+
MIN(CASE WHEN pjt.stage = 'plan'::provisioner_job_timing_stage THEN pjt.started_at END))), 0) AS plan_secs,
36+
GREATEST(EXTRACT(EPOCH FROM (
37+
MAX(CASE WHEN pjt.stage = 'graph'::provisioner_job_timing_stage THEN pjt.ended_at END) -
38+
MIN(CASE WHEN pjt.stage = 'graph'::provisioner_job_timing_stage THEN pjt.started_at END))), 0) AS graph_secs,
39+
GREATEST(EXTRACT(EPOCH FROM (
40+
MAX(CASE WHEN pjt.stage = 'apply'::provisioner_job_timing_stage THEN pjt.ended_at END) -
41+
MIN(CASE WHEN pjt.stage = 'apply'::provisioner_job_timing_stage THEN pjt.started_at END))), 0) AS apply_secs
4242
FROM provisioner_jobs pj
4343
JOIN workspace_builds wb ON wb.job_id = pj.id
4444
LEFT JOIN provisioner_job_timings pjt ON pjt.job_id = pj.id

0 commit comments

Comments
 (0)