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

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 3 commits intomainfromssncferreira/perf-prebuild-membership
Oct 29, 2025

Conversation

@ssncferreira
Copy link
Contributor

@ssncferreirassncferreira commentedOct 27, 2025
edited
Loading

Description

The membership reconciliation ensures the prebuilds system user is a member of all organizations with prebuilds configured. To support prebuilds quota management, each organization must have a prebuilds group that the system user belongs to.

Problem

Previously, membership reconciliation iterated over all presets to check and update membership status. This meant database queriesGetGroupByOrgAndName andInsertGroupMember were executed for each preset. Since presets are unique combinations of(organization, template, template version, preset), this resulted in several redundant checks for the same organization.

In dogfood,InsertGroupMember was called thousands of times per day, even though memberships were already configured (internal Grafana dashboard link)

Screenshot 2025-10-28 at 16 01 36

Solution

This PR introducesGetOrganizationsWithPrebuildStatus, a single query that 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 group

The membership reconciliation logic now:

  • Fetches status for all organizations in one query
  • Only performs inserts for organizations missing required memberships or groups
  • Safely handles concurrent operations via unique constraint violations
  • This reduces database load fromO(presets) toO(organizations) per reconciliation loop, with a single read query when everything is configured.

Changes

  • AddGetOrganizationsWithPrebuildStatus SQL query
  • Updatemembership.ReconcileAll to use organization-based reconciliation instead of preset-based
  • Update tests to reflect new behavior

Related to internal thread:https://codercom.slack.com/archives/C07GRNNRW03/p1760535570381369

Emyrk reacted with heart emoji
@ssncferreirassncferreiraforce-pushed thessncferreira/perf-prebuild-membership branch from9648569 to9d47f64CompareOctober 28, 2025 15:40
@ssncferreirassncferreira marked this pull request as ready for reviewOctober 28, 2025 16:12
@ssncferreirassncferreira merged commit7e8fcb4 intomainOct 29, 2025
30 checks passed
@ssncferreirassncferreira deleted the ssncferreira/perf-prebuild-membership branchOctober 29, 2025 14:24
@github-actionsgithub-actionsbot locked and limited conversation to collaboratorsOct 29, 2025
@ssncferreirassncferreira added the cherry-pick/v2.28Needs to be cherry-picked to the 2.28 release branch labelOct 29, 2025
Sign up for freeto subscribe to this conversation on GitHub. Already have an account?Sign in.

Reviewers

@johnstcnjohnstcnjohnstcn approved these changes

@SasSwartSasSwartSasSwart approved these changes

@EmyrkEmyrkAwaiting requested review from Emyrk

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@johnstcn@SasSwart

[8]ページ先頭

©2009-2025 Movatter.jp