From 88fecdb1a3b6633fc0c68e1246bca790b77868c0 Mon Sep 17 00:00:00 2001 From: Agniva De Sarker Date: Mon, 6 Jan 2020 23:07:08 +0530 Subject: [PATCH] MM-21396: fix duplicate channel cluster invalidations (#13537) While invalidating a channel, we send out a cluster message from the app layer as well as from the localcachelayer. This causes multiple redundant messages to be sent out. And additionally multiple cluster handlers were being registered from the app layer as well as the localcachelayer. We fix this by removing the cluster broadcast from the app layer and directly calling the store method. We also remove the duplicate event handler registration. --- app/cluster_handlers.go | 5 ----- app/web_hub.go | 14 +------------- 2 files changed, 1 insertion(+), 18 deletions(-) diff --git a/app/cluster_handlers.go b/app/cluster_handlers.go index 6b4acdc874..ef8199768f 100644 --- a/app/cluster_handlers.go +++ b/app/cluster_handlers.go @@ -18,7 +18,6 @@ func (a *App) RegisterAllClusterMessageHandlers() { a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL_MEMBERS_NOTIFY_PROPS, a.ClusterInvalidateCacheForChannelMembersNotifyPropHandler) a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL_MEMBERS, a.ClusterInvalidateCacheForChannelMembersHandler) a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL_BY_NAME, a.ClusterInvalidateCacheForChannelByNameHandler) - a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL, a.ClusterInvalidateCacheForChannelHandler) a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_USER, a.ClusterInvalidateCacheForUserHandler) a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_USER_TEAMS, a.ClusterInvalidateCacheForUserTeamsHandler) a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_CLEAR_SESSION_CACHE_FOR_USER, a.ClusterClearSessionCacheForUserHandler) @@ -63,10 +62,6 @@ func (a *App) ClusterInvalidateCacheForChannelByNameHandler(msg *model.ClusterMe a.InvalidateCacheForChannelByNameSkipClusterSend(msg.Props["id"], msg.Props["name"]) } -func (a *App) ClusterInvalidateCacheForChannelHandler(msg *model.ClusterMessage) { - a.InvalidateCacheForChannelSkipClusterSend(msg.Data) -} - func (a *App) ClusterInvalidateCacheForUserHandler(msg *model.ClusterMessage) { a.InvalidateCacheForUserSkipClusterSend(msg.Data) } diff --git a/app/web_hub.go b/app/web_hub.go index 204d3ffbc9..31161b0a0b 100644 --- a/app/web_hub.go +++ b/app/web_hub.go @@ -202,18 +202,10 @@ func (a *App) PublishSkipClusterSend(message *model.WebSocketEvent) { } func (a *App) InvalidateCacheForChannel(channel *model.Channel) { - a.InvalidateCacheForChannelSkipClusterSend(channel.Id) + a.Srv.Store.Channel().InvalidateChannel(channel.Id) a.InvalidateCacheForChannelByNameSkipClusterSend(channel.TeamId, channel.Name) if a.Cluster != nil { - msg := &model.ClusterMessage{ - Event: model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL, - SendType: model.CLUSTER_SEND_BEST_EFFORT, - Data: channel.Id, - } - - a.Cluster.SendClusterMessage(msg) - nameMsg := &model.ClusterMessage{ Event: model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL_BY_NAME, SendType: model.CLUSTER_SEND_BEST_EFFORT, @@ -231,10 +223,6 @@ func (a *App) InvalidateCacheForChannel(channel *model.Channel) { } } -func (a *App) InvalidateCacheForChannelSkipClusterSend(channelId string) { - a.Srv.Store.Channel().InvalidateChannel(channelId) -} - func (a *App) InvalidateCacheForChannelMembers(channelId string) { a.InvalidateCacheForChannelMembersSkipClusterSend(channelId)