Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6019903

Browse files
committed
feat: add prebuild invalidation via last_invalidated_at timestamp
Implements new approach for prebuild invalidation as discussed in issue#17917.Instead of directly deleting workspaces, this sets a timestamp on presets,and the reconciler automatically marks prebuilds as expired and creates new ones.Implementation:- Add last_invalidated_at column to template_version_presets table- API endpoint: POST /templates/{template}/prebuilds/invalidate- Updates last_invalidated_at = NOW() for all active template version presets- filterExpiredWorkspaces checks if prebuild.created_at < preset.last_invalidated_at- Reconciler automatically deletes expired prebuilds and spawns fresh onesChanges:- Migration 000394: Add last_invalidated_at column- Query: UpdatePresetsLastInvalidatedAt sets timestamp on active presets- API: Returns count and list of invalidated preset names- Logic: filterExpiredWorkspaces prioritizes last_invalidated_at over TTL- SDK: InvalidateTemplatePrebuilds client method with structured responseBenefits:- Non-blocking: API doesn't wait for reconciler- Async: Reconciler handles actual deletion- Safe: template_version_presets is no longer write-onceUpdates#17917
1 parent2bcf084 commit6019903

File tree

15 files changed

+241
-21
lines changed

15 files changed

+241
-21
lines changed

‎coderd/coderd.go‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1214,6 +1214,7 @@ func New(options *Options) *API {
12141214
r.Get("/",api.template)
12151215
r.Delete("/",api.deleteTemplate)
12161216
r.Patch("/",api.patchTemplateMeta)
1217+
r.Post("/prebuilds/invalidate",api.postInvalidateTemplatePrebuilds)
12171218
r.Route("/versions",func(r chi.Router) {
12181219
r.Post("/archive",api.postArchiveTemplateVersions)
12191220
r.Get("/",api.templateVersionsByTemplate)

‎coderd/database/dbauthz/dbauthz.go‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4968,6 +4968,20 @@ func (q *querier) UpdatePresetPrebuildStatus(ctx context.Context, arg database.U
49684968
returnq.db.UpdatePresetPrebuildStatus(ctx,arg)
49694969
}
49704970

4971+
func (q*querier)UpdatePresetsLastInvalidatedAt(ctx context.Context,arg database.UpdatePresetsLastInvalidatedAtParams) ([]database.TemplateVersionPreset,error) {
4972+
// Fetch template to check authorization
4973+
template,err:=q.db.GetTemplateByID(ctx,arg.TemplateID.UUID)
4974+
iferr!=nil {
4975+
returnnil,err
4976+
}
4977+
4978+
iferr:=q.authorizeContext(ctx,policy.ActionUpdate,template);err!=nil {
4979+
returnnil,err
4980+
}
4981+
4982+
returnq.db.UpdatePresetsLastInvalidatedAt(ctx,arg)
4983+
}
4984+
49714985
func (q*querier)UpdateProvisionerDaemonLastSeenAt(ctx context.Context,arg database.UpdateProvisionerDaemonLastSeenAtParams)error {
49724986
iferr:=q.authorizeContext(ctx,policy.ActionUpdate,rbac.ResourceProvisionerDaemon);err!=nil {
49734987
returnerr

‎coderd/database/dbmetrics/querymetrics.go‎

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/dbmock/dbmock.go‎

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/dump.sql‎

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTERTABLE template_version_presets DROP COLUMN last_invalidated_at;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTERTABLE template_version_presets ADD COLUMN last_invalidated_atTIMESTAMPTZ;

‎coderd/database/models.go‎

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/querier.go‎

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries.sql.go‎

Lines changed: 71 additions & 6 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp