From efe66bd84945e076dc07878069ef46d2d29a6d87 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 23 Aug 2023 16:22:05 +0000 Subject: [PATCH] fix: resolve deadlock when fetching everyone group for in-memory db --- coderd/database/dbfake/dbfake.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/coderd/database/dbfake/dbfake.go b/coderd/database/dbfake/dbfake.go index 8415955e78f86..605f8000afba4 100644 --- a/coderd/database/dbfake/dbfake.go +++ b/coderd/database/dbfake/dbfake.go @@ -626,7 +626,7 @@ func uniqueSortedUUIDs(uuids []uuid.UUID) []uuid.UUID { return unique } -func (q *FakeQuerier) getOrganizationMember(orgID uuid.UUID) []database.OrganizationMember { +func (q *FakeQuerier) getOrganizationMemberNoLock(orgID uuid.UUID) []database.OrganizationMember { var members []database.OrganizationMember for _, member := range q.organizationMembers { if member.OrganizationID == orgID { @@ -637,14 +637,14 @@ func (q *FakeQuerier) getOrganizationMember(orgID uuid.UUID) []database.Organiza return members } -// getEveryoneGroupMembers fetches all the users in an organization. -func (q *FakeQuerier) getEveryoneGroupMembers(orgID uuid.UUID) []database.User { +// getEveryoneGroupMembersNoLock fetches all the users in an organization. +func (q *FakeQuerier) getEveryoneGroupMembersNoLock(orgID uuid.UUID) []database.User { var ( everyone []database.User - orgMembers = q.getOrganizationMember(orgID) + orgMembers = q.getOrganizationMemberNoLock(orgID) ) for _, member := range orgMembers { - user, err := q.GetUserByID(context.TODO(), member.UserID) + user, err := q.getUserByIDNoLock(member.UserID) if err != nil { return nil } @@ -1434,7 +1434,7 @@ func (q *FakeQuerier) GetGroupMembers(_ context.Context, id uuid.UUID) ([]databa defer q.mutex.RUnlock() if q.isEveryoneGroup(id) { - return q.getEveryoneGroupMembers(id), nil + return q.getEveryoneGroupMembersNoLock(id), nil } var members []database.GroupMember