feat: implement connection caching for ghost user lifecycle management
Some checks failed
ci / plugin-ci (push) Has been cancelled
Some checks failed
ci / plugin-ci (push) Has been cancelled
Implement comprehensive connection caching system to prevent XMPP connection leaks and support HA environments: - Add node-specific XMPP resources using format "{baseResource}-node-{diagnosticId[:8]}" for HA compatibility - Implement thread-safe connection cache with mutex protection in UserManager - Add cache-first lookup in GetUser/GetOrCreateUser methods to prevent duplicate connections - Update lifecycle manager to efficiently check cached users instead of expensive KV store queries - Add graceful shutdown cleanup to properly disconnect all cached connections - Implement cache management methods: getCachedUser, cacheUser, removeCachedUser, getCachedUsers - Update activity tracking to work with cached connections - Add proper cache cleanup when users are disconnected or deleted This prevents connection leaks identified in previous implementation while maintaining efficient ghost user lifecycle management with 30-minute inactivity timeout. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
22f8c97a25
commit
0442bd7b72
5 changed files with 383 additions and 26 deletions
|
@ -9,8 +9,8 @@ This plugin provides bidirectional message synchronization between Mattermost an
|
|||
|
||||
- Bidirectional message synchronization (Mattermost ↔ XMPP)
|
||||
- XMPP Multi-User Chat (MUC) support
|
||||
- Configurable username prefixes for XMPP users in Mattermost
|
||||
- Ghost user management for cross-platform user representation
|
||||
- Configurable username prefixes for XMPP users
|
||||
- Ghost user management for cross-platform user representation on the XMPP server with connection lifecycle management (**XEP-0077 only**)
|
||||
- Comprehensive XMPP client with SASL Plain authentication
|
||||
|
||||
To learn more about plugins, see [our plugin documentation](https://developers.mattermost.com/extend/plugins/).
|
||||
|
@ -72,7 +72,7 @@ To avoid having to manually install your plugin, build and deploy your plugin us
|
|||
}
|
||||
```
|
||||
|
||||
### Development guidance
|
||||
### Development guidance
|
||||
|
||||
1. Fewer packages is better: default to the main package unless there's good reason for a new package.
|
||||
|
||||
|
@ -84,7 +84,7 @@ To avoid having to manually install your plugin, build and deploy your plugin us
|
|||
|
||||
### Modifying the server boilerplate
|
||||
|
||||
The server code comes with some boilerplate for creating an api, using slash commands, accessing the kvstore and using the cluster package for jobs.
|
||||
The server code comes with some boilerplate for creating an api, using slash commands, accessing the kvstore and using the cluster package for jobs.
|
||||
|
||||
#### Api
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue