From 05503440a66519ce25c69a6555a8136bd4f1e4eb Mon Sep 17 00:00:00 2001 From: Agniva De Sarker Date: Tue, 8 Mar 2022 20:28:29 +0530 Subject: [PATCH] MM-42378: Fix server crash while loading license (#19733) * MM-42378: Fix server crash while loading license The user service needs to be created before loading license. https://mattermost.atlassian.net/browse/MM-42378 ```release-note NONE ``` * Further fix ```release-note NONE ``` --- app/server.go | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/app/server.go b/app/server.go index 11a13e2cd7..90f58f6fa9 100644 --- a/app/server.go +++ b/app/server.go @@ -321,7 +321,31 @@ func NewServer(options ...Option) (*Server, error) { return nil, errors.Wrap(err, "cannot create store") } + // Needed to run before loading license. + s.userService, err = users.New(users.ServiceConfig{ + UserStore: s.Store.User(), + SessionStore: s.Store.Session(), + OAuthStore: s.Store.OAuth(), + ConfigFn: s.Config, + Metrics: s.Metrics, + Cluster: s.Cluster, + LicenseFn: s.License, + }) + if err != nil { + return nil, errors.Wrapf(err, "unable to create users service") + } + + // Needed before loading license + if s.statusCache, err = s.CacheProvider.NewCache(&cache.CacheOptions{ + Size: model.StatusCacheSize, + Striped: true, + StripedBuckets: maxInt(runtime.NumCPU()-1, 1), + }); err != nil { + return nil, errors.Wrap(err, "Unable to create status cache") + } + if model.BuildEnterpriseReady == "true" { + // Dependent on user service s.LoadLicense() } @@ -410,13 +434,6 @@ func NewServer(options ...Option) (*Server, error) { }); err != nil { return nil, errors.Wrap(err, "Unable to create pending post ids cache") } - if s.statusCache, err = s.CacheProvider.NewCache(&cache.CacheOptions{ - Size: model.StatusCacheSize, - Striped: true, - StripedBuckets: maxInt(runtime.NumCPU()-1, 1), - }); err != nil { - return nil, errors.Wrap(err, "Unable to create status cache") - } if s.openGraphDataCache, err = s.CacheProvider.NewCache(&cache.CacheOptions{ Size: openGraphMetadataCacheSize, }); err != nil { @@ -444,19 +461,6 @@ func NewServer(options ...Option) (*Server, error) { }) s.htmlTemplateWatcher = htmlTemplateWatcher - s.userService, err = users.New(users.ServiceConfig{ - UserStore: s.Store.User(), - SessionStore: s.Store.Session(), - OAuthStore: s.Store.OAuth(), - ConfigFn: s.Config, - Metrics: s.Metrics, - Cluster: s.Cluster, - LicenseFn: s.License, - }) - if err != nil { - return nil, errors.Wrapf(err, "unable to create users service") - } - s.teamService, err = teams.New(teams.ServiceConfig{ TeamStore: s.Store.Team(), ChannelStore: s.Store.Channel(),