From 47e493ea82e753292d196aebc4b5af1fa6d57a71 Mon Sep 17 00:00:00 2001 From: Agniva De Sarker Date: Fri, 27 Mar 2020 22:37:20 +0530 Subject: [PATCH] MM-23567: Remove goroutines from session_store.go (#13955) * Remove goroutines from session_store.go There isn't much benefit of running these 2 queries concurrently versus just serially. These queries are not in the hot path anyways. Maybe just simpler to keep it serial. * Incorporate review comments --- store/sqlstore/session_store.go | 37 +++++++++------------------------ 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/store/sqlstore/session_store.go b/store/sqlstore/session_store.go index 4a36af492b..2cdb02d451 100644 --- a/store/sqlstore/session_store.go +++ b/store/sqlstore/session_store.go @@ -48,29 +48,19 @@ func (me SqlSessionStore) Save(session *model.Session) (*model.Session, *model.A if len(session.Id) > 0 { return nil, model.NewAppError("SqlSessionStore.Save", "store.sql_session.save.existing.app_error", nil, "id="+session.Id, http.StatusBadRequest) } - session.PreSave() - tcs := make(chan store.StoreResult, 1) - go func() { - teams, err := me.Team().GetTeamsForUser(session.UserId) - tcs <- store.StoreResult{Data: teams, Err: err} - close(tcs) - }() - if err := me.GetMaster().Insert(session); err != nil { return nil, model.NewAppError("SqlSessionStore.Save", "store.sql_session.save.app_error", nil, "id="+session.Id+", "+err.Error(), http.StatusInternalServerError) } - rtcs := <-tcs - - if rtcs.Err != nil { - return nil, model.NewAppError("SqlSessionStore.Save", "store.sql_session.save.app_error", nil, "id="+session.Id+", "+rtcs.Err.Error(), http.StatusInternalServerError) + teamMembers, err := me.Team().GetTeamsForUser(session.UserId) + if err != nil { + return nil, model.NewAppError("SqlSessionStore.Save", "store.sql_session.save.app_error", nil, "id="+session.Id+", "+err.Error(), http.StatusInternalServerError) } - tempMembers := rtcs.Data.([]*model.TeamMember) - session.TeamMembers = make([]*model.TeamMember, 0, len(tempMembers)) - for _, tm := range tempMembers { + session.TeamMembers = make([]*model.TeamMember, 0, len(teamMembers)) + for _, tm := range teamMembers { if tm.DeleteAt == 0 { session.TeamMembers = append(session.TeamMembers, tm) } @@ -105,25 +95,18 @@ func (me SqlSessionStore) Get(sessionIdOrToken string) (*model.Session, *model.A func (me SqlSessionStore) GetSessions(userId string) ([]*model.Session, *model.AppError) { var sessions []*model.Session - tcs := make(chan store.StoreResult, 1) - go func() { - teams, err := me.Team().GetTeamsForUser(userId) - tcs <- store.StoreResult{Data: teams, Err: err} - close(tcs) - }() if _, err := me.GetReplica().Select(&sessions, "SELECT * FROM Sessions WHERE UserId = :UserId ORDER BY LastActivityAt DESC", map[string]interface{}{"UserId": userId}); err != nil { return nil, model.NewAppError("SqlSessionStore.GetSessions", "store.sql_session.get_sessions.app_error", nil, err.Error(), http.StatusInternalServerError) } - rtcs := <-tcs - if rtcs.Err != nil { - return nil, model.NewAppError("SqlSessionStore.GetSessions", "store.sql_session.get_sessions.app_error", nil, rtcs.Err.Error(), http.StatusInternalServerError) + teamMembers, err := me.Team().GetTeamsForUser(userId) + if err != nil { + return nil, model.NewAppError("SqlSessionStore.GetSessions", "store.sql_session.get_sessions.app_error", nil, err.Error(), http.StatusInternalServerError) } for _, session := range sessions { - tempMembers := rtcs.Data.([]*model.TeamMember) - session.TeamMembers = make([]*model.TeamMember, 0, len(tempMembers)) - for _, tm := range tempMembers { + session.TeamMembers = make([]*model.TeamMember, 0, len(teamMembers)) + for _, tm := range teamMembers { if tm.DeleteAt == 0 { session.TeamMembers = append(session.TeamMembers, tm) }