MM-43340: Fix racy test TestGraphQLChannelMembers (#19968)
We take a shallow copy of the team pointer before we pass that to the other functions. This is because the resolvers run in separate goroutines. https://mattermost.atlassian.net/browse/MM-43340 ```release-note NONE ```
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
1198191a1c
Коммит
c0b2aae84e
@@ -30,6 +30,7 @@ func getGraphQLTeam(ctx context.Context, id string) (*model.Team, error) {
|
||||
return nil, err
|
||||
}
|
||||
team := result.(*model.Team)
|
||||
team = team.ShallowCopy()
|
||||
|
||||
if (!team.AllowOpenInvite || team.Type != model.TeamOpen) &&
|
||||
!c.App.SessionHasPermissionToTeam(*c.AppContext.Session(), team.Id, model.PermissionViewTeam) {
|
||||
|
||||
@@ -252,6 +252,12 @@ func (o *Team) IsGroupConstrained() bool {
|
||||
return o.GroupConstrained != nil && *o.GroupConstrained
|
||||
}
|
||||
|
||||
// ShallowCopy returns a shallow copy of team.
|
||||
func (o *Team) ShallowCopy() *Team {
|
||||
c := *o
|
||||
return &c
|
||||
}
|
||||
|
||||
// The following are some GraphQL methods necessary to return the
|
||||
// data in float64 type. The spec doesn't support 64 bit integers,
|
||||
// so we have to pass the data in float64. The _ at the end is
|
||||
|
||||
Ссылка в новой задаче
Block a user