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

perf: optimize prebuilds membership reconciliation to check orgs not presets (#20493)#20555

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

Merged
ssncferreira merged 2 commits intorelease/2.28fromssncferreira/2.28-backport-20493
Oct 30, 2025

Conversation

@ssncferreira
Copy link
Contributor

Related to PR:#20493

(cherry picked from commit7e8fcb4)

…presets (#20493)The membership reconciliation ensures the prebuilds system user is amember of all organizations with prebuilds configured. To supportprebuilds quota management, each organization must have a prebuildsgroup that the system user belongs to.Previously, membership reconciliation iterated over all presets to checkand update membership status. This meant database queries`GetGroupByOrgAndName` and `InsertGroupMember` were executed for eachpreset. Since presets are unique combinations of `(organization,template, template version, preset)`, this resulted in several redundantchecks for the same organization.In dogfood, `InsertGroupMember` was called thousands of times per day,even though memberships were already configured ([internal Grafanadashboard link](https://grafana.dev.coder.com/goto/46MZ1UgDg?orgId=1))<img width="5382" height="1788" alt="Screenshot 2025-10-28 at 16 01 36"src="https://github.com/user-attachments/assets/757b7253-106f-4f72-8586-8e2ede9f18db"/>This PR introduces `GetOrganizationsWithPrebuildStatus`, a single querythat returns:* All unique organizations with prebuilds configured* Whether the prebuilds user is a member of each organization* Whether the prebuilds group exists in each organization* Whether the prebuilds user is in the prebuilds groupThe membership reconciliation logic now:* Fetches status for all organizations in one query* Only performs inserts for organizations missing required membershipsor groups* Safely handles concurrent operations via unique constraint violations* This reduces database load from `O(presets)` to `O(organizations)` perreconciliation loop, with a single read query when everything isconfigured.* Add `GetOrganizationsWithPrebuildStatus` SQL query* Update `membership.ReconcileAll` to use organization-basedreconciliation instead of preset-based* Update tests to reflect new behaviorRelated to internal thread:https://codercom.slack.com/archives/C07GRNNRW03/p1760535570381369(cherry picked from commit7e8fcb4)
@johnstcnjohnstcn added the cherry-pick/v2.28Needs to be cherry-picked to the 2.28 release branch labelOct 29, 2025
@ssncferreirassncferreira merged commit2cf4b5c intorelease/2.28Oct 30, 2025
28 checks passed
@ssncferreirassncferreira deleted the ssncferreira/2.28-backport-20493 branchOctober 30, 2025 10:50
@github-actionsgithub-actionsbot locked and limited conversation to collaboratorsOct 30, 2025
Sign up for freeto subscribe to this conversation on GitHub. Already have an account?Sign in.

Reviewers

@david-fraleydavid-fraleydavid-fraley approved these changes

Assignees

@ssncferreirassncferreira

Labels

cherry-pick/v2.28Needs to be cherry-picked to the 2.28 release branch

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

4 participants

@ssncferreira@david-fraley@johnstcn

[8]ページ先頭

©2009-2025 Movatter.jp