Skip to content

Commit d7b4ec4

Browse files
fix: bug in SQL
1 parent fc32154 commit d7b4ec4

File tree

3 files changed

+58
-5
lines changed

3 files changed

+58
-5
lines changed

coderd/database/querier_test.go

+53
Original file line numberDiff line numberDiff line change
@@ -3986,6 +3986,59 @@ func TestGetPresetsBackoff(t *testing.T) {
39863986
require.Equal(t, int32(2), backoff.NumFailed)
39873987
}
39883988
})
3989+
3990+
t.Run("check LastBuildAt timestamp", func(t *testing.T) {
3991+
t.Parallel()
3992+
3993+
db, _ := dbtestutil.NewDB(t)
3994+
ctx := testutil.Context(t, testutil.WaitShort)
3995+
dbgen.Organization(t, db, database.Organization{
3996+
ID: orgID,
3997+
})
3998+
dbgen.User(t, db, database.User{
3999+
ID: userID,
4000+
})
4001+
lookbackPeriod := time.Hour
4002+
4003+
tmpl1 := createTemplate(db)
4004+
tmpl1V1 := createTmplVersion(db, tmpl1, tmpl1.ActiveVersionID, &tmplVersionOpts{
4005+
DesiredInstances: 5,
4006+
})
4007+
createWorkspaceBuild(db, tmpl1, tmpl1V1, &workspaceBuildOpts{
4008+
successfulJob: false,
4009+
createdAt: now.Add(-4 * time.Minute),
4010+
})
4011+
createWorkspaceBuild(db, tmpl1, tmpl1V1, &workspaceBuildOpts{
4012+
successfulJob: false,
4013+
createdAt: now.Add(-0 * time.Minute),
4014+
})
4015+
createWorkspaceBuild(db, tmpl1, tmpl1V1, &workspaceBuildOpts{
4016+
successfulJob: false,
4017+
createdAt: now.Add(-3 * time.Minute),
4018+
})
4019+
createWorkspaceBuild(db, tmpl1, tmpl1V1, &workspaceBuildOpts{
4020+
successfulJob: false,
4021+
createdAt: now.Add(-1 * time.Minute),
4022+
})
4023+
createWorkspaceBuild(db, tmpl1, tmpl1V1, &workspaceBuildOpts{
4024+
successfulJob: false,
4025+
createdAt: now.Add(-2 * time.Minute),
4026+
})
4027+
4028+
backoffs, err := db.GetPresetsBackoff(ctx, now.Add(-lookbackPeriod))
4029+
require.NoError(t, err)
4030+
4031+
require.Len(t, backoffs, 1)
4032+
{
4033+
backoff := backoffs[0]
4034+
require.Equal(t, backoff.TemplateVersionID, tmpl1.ActiveVersionID)
4035+
require.Equal(t, backoff.PresetID, tmpl1V1.preset.ID)
4036+
require.Equal(t, database.ProvisionerJobStatusFailed, backoff.LatestBuildStatus)
4037+
require.Equal(t, int32(5), backoff.NumFailed)
4038+
// make sure LastBuildAt is equal to latest failed build timestamp
4039+
require.Equal(t, 0, now.Compare(backoff.LastBuildAt.(time.Time)))
4040+
}
4041+
})
39894042
}
39904043

39914044
func requireUsersMatch(t testing.TB, expected []database.User, found []database.GetUsersRow, msg string) {

coderd/database/queries.sql.go

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/prebuilds.sql

+2-2
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,12 @@ SELECT tsb.template_version_id,
8888
tsb.preset_id,
8989
tsb.job_status::provisioner_job_status AS latest_build_status,
9090
COALESCE(fc.num_failed, 0)::int AS num_failed,
91-
tsb.created_at::timestamptz AS last_build_at
91+
MAX(tsb.created_at::timestamptz) AS last_build_at
9292
FROM time_sorted_builds tsb
9393
LEFT JOIN failed_count fc ON fc.preset_id = tsb.preset_id
9494
WHERE tsb.rn <= tsb.desired_instances -- Fetch the last N builds, where N is the number of desired instances; if any fail, we backoff
9595
AND tsb.job_status = 'failed'::provisioner_job_status
96-
GROUP BY tsb.template_version_id, tsb.preset_id, tsb.job_status, tsb.created_at, fc.num_failed;
96+
GROUP BY tsb.template_version_id, tsb.preset_id, tsb.job_status, fc.num_failed;
9797

9898
-- name: ClaimPrebuild :one
9999
UPDATE workspaces w

0 commit comments

Comments
 (0)