- Notifications
You must be signed in to change notification settings - Fork1k
fix: exclude prebuilt workspaces from template-level lifecycle updates#19265
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
fix: exclude prebuilt workspaces from template-level lifecycle updates#19265
Uh oh!
There was an error while loading.Please reload this page.
Conversation
## DescriptionThis PR ensures that prebuilt workspaces are properly excluded from thelifecycle executor and treated as a separate class of workspaces, fullymanaged by the prebuild reconciliation loop.It introduces two lifecycle guarantees:* When a prebuilt workspace is created (i.e., when the workspace buildcompletes), all lifecycle-related fields are unset, ensuring theworkspace does not participate in TTL, autostop, autostart, dormancy, orauto-deletion logic.* When a prebuilt workspace is claimed, it transitions into a regularuser workspace. At this point, all lifecycle fields are correctlypopulated according to template-level configurations, allowing theworkspace to be managed by the lifecycle executor as expected.## Changes* Prebuilt workspaces now have all lifecycle-relevant fields unsetduring creation* When a prebuild is claimed:* Lifecycle fields are set based on template and workspace levelconfigurations. This ensures a clean transition into the standardworkspace lifecycle flow.* Updated lifecycle-related SQL update queries to explicitly excludeprebuilt workspaces.## Relates Related issue:#18898To reduce the scope of this PR and make the review process moremanageable, the original implementation has been split into thefollowing focused PRs:*#19259*#19263*#19264*#19265These PRs should be considered in conjunction with this one tounderstand the complete set of lifecycle separation changes for prebuiltworkspaces.
b08282a
to10fcd6e
Compare…late-update-ignore-prebuilds
…late-update-ignore-prebuilds
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
LGTM, I see existing tests as well inenterprise/coderd/workspaces_test.go
relating to testing dormancy deletion only after claiming.
The other tests in |
d79a779
intomainUh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Description
This PR ensures that lifecycle-related changes made via template schedule updates donot affect prebuilt workspaces. Since prebuilds are managed by the reconciliation loop and do not participate in the regular lifecycle executor flow, they must be excluded from any updates triggered by template configuration changes.
This includes changes to TTL, dormant-deletion scheduling, deadline and autostart scheduling.
Changes
UpdateWorkspacesTTLByTemplateID
to exclude prebuilt workspacesUpdateWorkspacesDormantDeletingAtByTemplateID
to exclude prebuilt workspacesThis change guarantees that only lifecycle-managed workspaces are affected when template-level configurations are modified, preserving strict boundaries between prebuild and user workspace lifecycles.
Related with: