mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
Fixing should send event removing extra go channel creation (#4942)
This commit is contained in:
@@ -200,13 +200,8 @@ func (webCon *WebConn) ShouldSendEvent(msg *model.WebSocketEvent) bool {
|
||||
|
||||
// Only broadcast typing messages if less than 1K people in channel
|
||||
if msg.Event == model.WEBSOCKET_EVENT_TYPING {
|
||||
if result := <-Srv.Store.Channel().GetMemberCount(msg.Broadcast.ChannelId, true); result.Err != nil {
|
||||
l4g.Error("webhub.shouldSendEvent: " + result.Err.Error())
|
||||
if Srv.Store.Channel().GetMemberCountFromCache(msg.Broadcast.ChannelId) > *utils.Cfg.TeamSettings.MaxNotificationsPerChannel {
|
||||
return false
|
||||
} else {
|
||||
if result.Data.(int64) > *utils.Cfg.TeamSettings.MaxNotificationsPerChannel {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -839,6 +839,27 @@ func (us SqlChannelStore) InvalidateMemberCount(channelId string) {
|
||||
channelMemberCountsCache.Remove(channelId)
|
||||
}
|
||||
|
||||
func (s SqlChannelStore) GetMemberCountFromCache(channelId string) int64 {
|
||||
metrics := einterfaces.GetMetricsInterface()
|
||||
|
||||
if cacheItem, ok := channelMemberCountsCache.Get(channelId); ok {
|
||||
if metrics != nil {
|
||||
metrics.IncrementMemCacheHitCounter("Channel Member Counts")
|
||||
}
|
||||
return cacheItem.(int64)
|
||||
} else {
|
||||
if metrics != nil {
|
||||
metrics.IncrementMemCacheMissCounter("Channel Member Counts")
|
||||
}
|
||||
}
|
||||
|
||||
if result := <-s.GetMemberCount(channelId, true); result.Err != nil {
|
||||
return 0
|
||||
} else {
|
||||
return result.Data.(int64)
|
||||
}
|
||||
}
|
||||
|
||||
func (s SqlChannelStore) GetMemberCount(channelId string, allowFromCache bool) StoreChannel {
|
||||
storeChannel := make(StoreChannel, 1)
|
||||
metrics := einterfaces.GetMetricsInterface()
|
||||
|
||||
@@ -419,6 +419,14 @@ func TestChannelMemberStore(t *testing.T) {
|
||||
t.Fatal("should have saved 2 members")
|
||||
}
|
||||
|
||||
if store.Channel().GetMemberCountFromCache(o1.ChannelId) != 2 {
|
||||
t.Fatal("should have saved 2 members")
|
||||
}
|
||||
|
||||
if store.Channel().GetMemberCountFromCache("junk") != 0 {
|
||||
t.Fatal("should have saved 0 members")
|
||||
}
|
||||
|
||||
count = (<-store.Channel().GetMemberCount(o1.ChannelId, false)).Data.(int64)
|
||||
if count != 2 {
|
||||
t.Fatal("should have saved 2 members")
|
||||
|
||||
@@ -108,6 +108,7 @@ type ChannelStore interface {
|
||||
IsUserInChannelUseCache(userId string, channelId string) bool
|
||||
GetMemberForPost(postId string, userId string) StoreChannel
|
||||
InvalidateMemberCount(channelId string)
|
||||
GetMemberCountFromCache(channelId string) int64
|
||||
GetMemberCount(channelId string, allowFromCache bool) StoreChannel
|
||||
RemoveMember(channelId string, userId string) StoreChannel
|
||||
PermanentDeleteMembersByUser(userId string) StoreChannel
|
||||
|
||||
Reference in New Issue
Block a user