Skip to content

fix(controlplane): tolerate orphaned project memberships in ListMembers#3083

Merged
migmartri merged 1 commit intochainloop-dev:mainfrom
migmartri:fix/tolerate-orphaned-memberships
Apr 30, 2026
Merged

fix(controlplane): tolerate orphaned project memberships in ListMembers#3083
migmartri merged 1 commit intochainloop-dev:mainfrom
migmartri:fix/tolerate-orphaned-memberships

Conversation

@migmartri
Copy link
Copy Markdown
Member

Summary

  • ProjectRepo.ListMembers now skips membership rows whose referenced user or group no longer exists instead of failing the whole call with a 404, and decrements totalCount per skipped row so the UI sees a consistent total.
  • Adds a one-shot migration (20260430223706.sql) that removes existing orphaned memberships rows for both user and group membership types.

Background

memberships.member_id is polymorphic and has no foreign key to users/groups. When a user or group is deleted via a path that bypasses MembershipRepo.Delete (e.g. SQL cascade triggered by the legacy user_memberships FK on User.Delete), the project-level membership rows survive as orphans. A single orphan caused ListMembers to return HTTP 404, hiding all members of the affected project from the UI.

Closes #3082

ProjectRepo.ListMembers now skips membership rows whose user/group
no longer exists instead of returning 404, and decrements totalCount
accordingly. memberships.member_id is polymorphic with no FK, so
deletes that bypass the app-level cascade can leave dangling rows.

Includes a one-shot migration that removes existing orphans.

Closes chainloop-dev#3082

Signed-off-by: Miguel Martinez Trivino <miguel@chainloop.dev>
@migmartri migmartri requested a review from a team April 30, 2026 22:43
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 4 files

@migmartri migmartri merged commit 286a86a into chainloop-dev:main Apr 30, 2026
15 checks passed
@migmartri migmartri deleted the fix/tolerate-orphaned-memberships branch April 30, 2026 23:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ListMembers 404s with "user not found" due to orphaned memberships

2 participants