Maintain a list of all MUC participants in case of cluster failure

Description

All cluster nodes should at all times have a collection of all occupants of all chat rooms

This information is needed when a local node leaves the cluster (but continues to operate). In that case, it needs to be able to inform its locally connected users (that ‘remain in the room’) that all occupants that are connected to other cluster nodes (now unavailable) have ‘left the room’).

The data that needs to be maintained for this purpose is fairly light, and does not require all state. It should be enough to track

Room JID and

  • cluster node ID (for domain-local users) (as ‘leave’ presences can be sent immediately for these, after a cluster disconnect)

  • real JID (for federated users) (unsure if ‘leave’ should be sent. Federation might still be feasible?)

it’s possible that it’s enough to maintaining a collection of all occupants of all chat rooms that the local node has ever communicated to any of the users connected to the local node).

Environment

None

Assignee

Guus der Kinderen

Reporter

Dan Caseley