diff --git a/server/channels/app/platform/service.go b/server/channels/app/platform/service.go index 1366fb6e40..aa58cb2a76 100644 --- a/server/channels/app/platform/service.go +++ b/server/channels/app/platform/service.go @@ -98,7 +98,9 @@ type PlatformService struct { goroutineBuffered chan struct{} additionalClusterHandlers map[model.ClusterEvent]einterfaces.ClusterMessageHandler - sharedChannelService SharedChannelServiceIFace + + shareChannelServiceMux sync.RWMutex + sharedChannelService SharedChannelServiceIFace pluginEnv HookRunner } @@ -471,9 +473,17 @@ func (ps *PlatformService) SetSqlStore(s *sqlstore.SqlStore) { } func (ps *PlatformService) SetSharedChannelService(s SharedChannelServiceIFace) { + ps.shareChannelServiceMux.Lock() + defer ps.shareChannelServiceMux.Unlock() ps.sharedChannelService = s } +func (ps *PlatformService) GetSharedChannelService() SharedChannelServiceIFace { + ps.shareChannelServiceMux.RLock() + defer ps.shareChannelServiceMux.RUnlock() + return ps.sharedChannelService +} + func (ps *PlatformService) SetPluginsEnvironment(runner HookRunner) { ps.pluginEnv = runner } diff --git a/server/channels/app/platform/shared_channel_notifier.go b/server/channels/app/platform/shared_channel_notifier.go index fcf24e417a..1ae93e2c0a 100644 --- a/server/channels/app/platform/shared_channel_notifier.go +++ b/server/channels/app/platform/shared_channel_notifier.go @@ -31,7 +31,7 @@ var sharedChannelEventsForInvitation = []model.WebsocketEventType{ // Only on the leader node it will notify the sync service to perform necessary updates to the remote for the given // shared channel. func (ps *PlatformService) SharedChannelSyncHandler(event *model.WebSocketEvent) { - syncService := ps.sharedChannelService + syncService := ps.GetSharedChannelService() if syncService == nil { return }