diff --git a/server/channels/app/platform/service.go b/server/channels/app/platform/service.go index ab81f43b29..11fbfd2cac 100644 --- a/server/channels/app/platform/service.go +++ b/server/channels/app/platform/service.go @@ -193,20 +193,20 @@ func New(sc ServiceConfig, options ...Option) (*PlatformService, error) { // Depends on Step 0 (config), 1 (cacheProvider), 3 (search engine), 5 (metrics) and cluster. if ps.newStore == nil { ps.newStore = func() (store.Store, error) { + // The layer cake is as follows: (From bottom to top) + // SQL layer + // | + // Retry layer + // | + // Search layer + // | + // Timer layer + // | + // Cache layer ps.sqlStore = sqlstore.New(ps.Config().SqlSettings, ps.metricsIFace) - lcl, err2 := localcachelayer.NewLocalCacheLayer( - retrylayer.New(ps.sqlStore), - ps.metricsIFace, - ps.clusterIFace, - ps.cacheProvider, - ) - if err2 != nil { - return nil, fmt.Errorf("cannot create local cache layer: %w", err2) - } - searchStore := searchlayer.NewSearchLayer( - lcl, + retrylayer.New(ps.sqlStore), ps.SearchEngine, ps.Config(), ) @@ -215,16 +215,23 @@ func New(sc ServiceConfig, options ...Option) (*PlatformService, error) { searchStore.UpdateConfig(cfg) }) + lcl, err2 := localcachelayer.NewLocalCacheLayer( + timerlayer.New(searchStore, ps.metricsIFace), + ps.metricsIFace, + ps.clusterIFace, + ps.cacheProvider, + ) + if err2 != nil { + return nil, fmt.Errorf("cannot create local cache layer: %w", err2) + } + license := ps.License() ps.sqlStore.UpdateLicense(license) ps.AddLicenseListener(func(oldLicense, newLicense *model.License) { ps.sqlStore.UpdateLicense(newLicense) }) - return timerlayer.New( - searchStore, - ps.metricsIFace, - ), nil + return lcl, nil } }