diff --git a/server/channels/app/platform/cluster_handlers.go b/server/channels/app/platform/cluster_handlers.go index af90c2783a9..afe23d6622c 100644 --- a/server/channels/app/platform/cluster_handlers.go +++ b/server/channels/app/platform/cluster_handlers.go @@ -17,7 +17,7 @@ func (ps *PlatformService) RegisterClusterHandlers() { ps.clusterIFace.RegisterClusterMessageHandler(model.ClusterEventPublish, ps.ClusterPublishHandler) ps.clusterIFace.RegisterClusterMessageHandler(model.ClusterEventUpdateStatus, ps.ClusterUpdateStatusHandler) ps.clusterIFace.RegisterClusterMessageHandler(model.ClusterEventInvalidateAllCaches, ps.ClusterInvalidateAllCachesHandler) - ps.clusterIFace.RegisterClusterMessageHandler(model.ClusterEventInvalidateCacheForUserTeams, ps.clusterInvalidateCacheForUserTeamsHandler) + ps.clusterIFace.RegisterClusterMessageHandler(model.ClusterEventInvalidateWebConnCacheForUser, ps.clusterInvalidateWebConnSessionCacheForUserHandler) ps.clusterIFace.RegisterClusterMessageHandler(model.ClusterEventBusyStateChanged, ps.clusterBusyStateChgHandler) ps.clusterIFace.RegisterClusterMessageHandler(model.ClusterEventClearSessionCacheForUser, ps.clusterClearSessionCacheForUserHandler) ps.clusterIFace.RegisterClusterMessageHandler(model.ClusterEventClearSessionCacheForAllUsers, ps.clusterClearSessionCacheForAllUsersHandler) @@ -67,13 +67,13 @@ func (ps *PlatformService) ClusterInvalidateAllCachesHandler(msg *model.ClusterM ps.InvalidateAllCachesSkipSend() } -func (ps *PlatformService) clusterInvalidateCacheForUserTeamsHandler(msg *model.ClusterMessage) { - ps.invalidateWebConnSessionCacheForUser(string(msg.Data)) +func (ps *PlatformService) clusterInvalidateWebConnSessionCacheForUserHandler(msg *model.ClusterMessage) { + ps.invalidateWebConnSessionCacheForUserSkipClusterSend(string(msg.Data)) } func (ps *PlatformService) ClearSessionCacheForUserSkipClusterSend(userID string) { ps.ClearUserSessionCacheLocal(userID) - ps.invalidateWebConnSessionCacheForUser(userID) + ps.invalidateWebConnSessionCacheForUserSkipClusterSend(userID) } func (ps *PlatformService) ClearSessionCacheForAllUsersSkipClusterSend() { @@ -103,7 +103,7 @@ func (ps *PlatformService) clusterBusyStateChgHandler(msg *model.ClusterMessage) } } -func (ps *PlatformService) invalidateWebConnSessionCacheForUser(userID string) { +func (ps *PlatformService) invalidateWebConnSessionCacheForUserSkipClusterSend(userID string) { hub := ps.GetHubForUserId(userID) if hub != nil { hub.InvalidateUser(userID) diff --git a/server/channels/app/platform/web_hub.go b/server/channels/app/platform/web_hub.go index 4797fe8e6d3..83965feed2b 100644 --- a/server/channels/app/platform/web_hub.go +++ b/server/channels/app/platform/web_hub.go @@ -200,20 +200,11 @@ func (ps *PlatformService) InvalidateCacheForUser(userID string) { ps.Store.User().InvalidateProfileCacheForUser(userID) } -func (ps *PlatformService) InvalidateChannelCacheForUser(userID string) { - ps.Store.Channel().InvalidateAllChannelMembersForUser(userID) - ps.ClearUserSessionCache(userID) - - ps.Store.User().InvalidateProfilesInChannelCacheByUser(userID) -} - -func (ps *PlatformService) InvalidateCacheForUserTeams(userID string) { - ps.invalidateWebConnSessionCacheForUser(userID) - ps.Store.Team().InvalidateAllTeamIdsForUser(userID) - +func (ps *PlatformService) invalidateWebConnSessionCacheForUser(userID string) { + ps.invalidateWebConnSessionCacheForUserSkipClusterSend(userID) if ps.clusterIFace != nil { msg := &model.ClusterMessage{ - Event: model.ClusterEventInvalidateCacheForUserTeams, + Event: model.ClusterEventInvalidateWebConnCacheForUser, SendType: model.ClusterSendBestEffort, Data: []byte(userID), } @@ -221,6 +212,18 @@ func (ps *PlatformService) InvalidateCacheForUserTeams(userID string) { } } +func (ps *PlatformService) InvalidateChannelCacheForUser(userID string) { + ps.Store.Channel().InvalidateAllChannelMembersForUser(userID) + ps.invalidateWebConnSessionCacheForUser(userID) + ps.Store.User().InvalidateProfilesInChannelCacheByUser(userID) +} + +func (ps *PlatformService) InvalidateCacheForUserTeams(userID string) { + ps.invalidateWebConnSessionCacheForUser(userID) + // This method has its own cluster broadcast hidden inside localcachelayer. + ps.Store.Team().InvalidateAllTeamIdsForUser(userID) +} + // UpdateWebConnUserActivity sets the LastUserActivityAt of the hub for the given session. func (ps *PlatformService) UpdateWebConnUserActivity(session model.Session, activityAt int64) { hub := ps.GetHubForUserId(session.UserId) diff --git a/server/enterprise/metrics/metrics.go b/server/enterprise/metrics/metrics.go index aac0046999e..4fd9c862762 100644 --- a/server/enterprise/metrics/metrics.go +++ b/server/enterprise/metrics/metrics.go @@ -467,7 +467,7 @@ func New(ps *platform.PlatformService, driver, dataSource string) *MetricsInterf model.ClusterEventInvalidateCacheForChannel, model.ClusterEventInvalidateCacheForChannelGuestCount, model.ClusterEventInvalidateCacheForUser, - model.ClusterEventInvalidateCacheForUserTeams, + model.ClusterEventInvalidateWebConnCacheForUser, model.ClusterEventClearSessionCacheForUser, model.ClusterEventInvalidateCacheForRoles, model.ClusterEventInvalidateCacheForRolePermissions, diff --git a/server/public/model/cluster_message.go b/server/public/model/cluster_message.go index 7d41c0a0fdc..7e58b1c72dc 100644 --- a/server/public/model/cluster_message.go +++ b/server/public/model/cluster_message.go @@ -16,7 +16,7 @@ const ( ClusterEventInvalidateCacheForChannel ClusterEvent = "inv_channel" ClusterEventInvalidateCacheForChannelGuestCount ClusterEvent = "inv_channel_guest_count" ClusterEventInvalidateCacheForUser ClusterEvent = "inv_user" - ClusterEventInvalidateCacheForUserTeams ClusterEvent = "inv_user_teams" + ClusterEventInvalidateWebConnCacheForUser ClusterEvent = "inv_user_teams" ClusterEventClearSessionCacheForUser ClusterEvent = "clear_session_user" ClusterEventInvalidateCacheForRoles ClusterEvent = "inv_roles" ClusterEventInvalidateCacheForRolePermissions ClusterEvent = "inv_role_permissions"