MM-33913: Fix read-after-write issues with team member (#17173)
During LDAP sync, we would call AddTeamMember which had a read-after-write issue where we would create a team member but then immediately after that query the team member. The same pattern was found in: AddTeamMember AddTeamMembers AddTeamMemberByToken To fix this, we just return the inserted team member from AddUserToTeam and use that instead of query GetTeamMember again. ```release-note NONE ``` https://mattermost.atlassian.net/browse/MM-33913 Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
02196e04fa
Коммит
4f0cfbe329
@@ -84,7 +84,7 @@ type slackComment struct {
|
||||
type Actions struct {
|
||||
UpdateActive func(*model.User, bool) (*model.User, *model.AppError)
|
||||
AddUserToChannel func(*model.User, *model.Channel) (*model.ChannelMember, *model.AppError)
|
||||
JoinUserToTeam func(*model.Team, *model.User, string) *model.AppError
|
||||
JoinUserToTeam func(*model.Team, *model.User, string) (*model.TeamMember, *model.AppError)
|
||||
CreateDirectChannel func(string, string, ...model.ChannelOption) (*model.Channel, *model.AppError)
|
||||
CreateGroupChannel func([]string) (*model.Channel, *model.AppError)
|
||||
CreateChannel func(*model.Channel, bool) (*model.Channel, *model.AppError)
|
||||
@@ -234,7 +234,7 @@ func (si *SlackImporter) slackAddUsers(teamId string, slackusers []slackUser, im
|
||||
// Check for email conflict and use existing user if found
|
||||
if existingUser, err := si.store.User().GetByEmail(email); err == nil {
|
||||
addedUsers[sUser.Id] = existingUser
|
||||
if err := si.actions.JoinUserToTeam(team, addedUsers[sUser.Id], ""); err != nil {
|
||||
if _, err := si.actions.JoinUserToTeam(team, addedUsers[sUser.Id], ""); err != nil {
|
||||
importerLog.WriteString(i18n.T("api.slackimport.slack_add_users.merge_existing_failed", map[string]interface{}{"Email": existingUser.Email, "Username": existingUser.Username}))
|
||||
} else {
|
||||
importerLog.WriteString(i18n.T("api.slackimport.slack_add_users.merge_existing", map[string]interface{}{"Email": existingUser.Email, "Username": existingUser.Username}))
|
||||
@@ -695,7 +695,7 @@ func (si *SlackImporter) oldImportUser(team *model.Team, user *model.User) *mode
|
||||
mlog.Warn("Failed to set email verified.", mlog.Err(err))
|
||||
}
|
||||
|
||||
if err := si.actions.JoinUserToTeam(team, user, ""); err != nil {
|
||||
if _, err := si.actions.JoinUserToTeam(team, user, ""); err != nil {
|
||||
mlog.Warn("Failed to join team when importing.", mlog.Err(err))
|
||||
}
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user