mirror of
https://github.com/mattermost/mattermost.git
synced 2026-08-07 03:35:08 -05:00
* MM-68543 Invalidate active WebConn session cache on global session revocation Mirrors the per-user revocation pattern (ClearUserSessionCache -> ClearSessionCacheForUserSkipClusterSend -> hub fan-out) for the global revocation path so that ClearAllUsersSessionCache invokes the same local-side primitive on the originating node as the cluster handler runs on remote nodes. Also covers single-node deployments where the cluster broadcast was previously the only trigger of the WebConn invalidation. Adds a Hub.InvalidateAll fan-out primitive on the websocket hub and two contract tests covering the SkipClusterSend variant and the production RevokeSessionsFromAllUsers entry point. Made-with: Cursor * MM-68543 Restore error propagation on ClearAllUsersSessionCache The previous commit moved the local-side work into ClearSessionCacheForAllUsersSkipClusterSend, which returned no error, so ClearAllUsersSessionCache started always returning nil even when the underlying session-cache purge failed. Make the helper return the cache-purge error and propagate it back through ClearAllUsersSessionCache, restoring the historical error contract for callers (RevokeSessionsFromAllUsers, App.ClearSessionCacheForAllUsers, TestCache). The hub fan-out and the cluster broadcast still run unconditionally so security invalidation happens even on local-purge failure. Made-with: Cursor * MM-68543 Trim comments and fix unchecked errcheck on App wrapper Address review feedback: trim verbose comments across the touched files and check the error returned by ClearSessionCacheForAllUsersSkipClusterSend in the App-level wrapper to fix the golangci-lint errcheck failure introduced when the helper started returning an error. Made-with: Cursor * MM-68543 Wipe channel routing index instead of rebuilding it on global revoke Rebuilding byChannelID per user via InvalidateCMCacheForUser issues a GetAllChannelMembersForUser DB query for every user with a live conn on the hub, which is wasted work when those conns have just been invalidated. Replace it with a single clear() of byChannelID, hidden behind a small clearChannels() helper. Index entries repopulate naturally as conns re-handshake or fully reconnect. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>