MM-61130: Use a channelMember map at web_hub level (#28810)
Tests at very high scale indicates that the iteration of all connections during websocket broadcast starts to become a bottleneck. To optimize this, we move the channelMember cache from inside web_conn.go to the hubConnectionIndex. This involves adding a new map keyed by the channelID and containing all webConns where the user is a member of that channel. Subsequently, a new method needed to be added to invalidate the cache which previously used to happen in web_conn. And as a last step, we remove the cache from web_conn to reduce SQL queries to the DB. https://mattermost.atlassian.net/browse/MM-61130 ```release-note NONE ```
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
37d97e8024
Коммит
bd8774bdce
@@ -16,16 +16,6 @@ func (a *App) GetHubForUserId(userID string) *platform.Hub {
|
||||
return a.Srv().Platform().GetHubForUserId(userID)
|
||||
}
|
||||
|
||||
// HubRegister registers a connection to a hub.
|
||||
func (a *App) HubRegister(webConn *platform.WebConn) {
|
||||
a.Srv().Platform().HubRegister(webConn)
|
||||
}
|
||||
|
||||
// HubUnregister unregisters a connection from a hub.
|
||||
func (a *App) HubUnregister(webConn *platform.WebConn) {
|
||||
a.Srv().Platform().HubUnregister(webConn)
|
||||
}
|
||||
|
||||
func (a *App) Publish(message *model.WebSocketEvent) {
|
||||
a.Srv().Platform().Publish(message)
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user