Build: #1228 was successful Scheduled with changes by Guus der Kinderen and Emiel van der Herberg <emiel.van.der.herberg@marviq.com>

Build result summary

Details

Completed
Queue duration
9 minutes
Duration
1 minute
Labels
None
Agent
Default Agent
Revision
41ab11222844470dd03da58327d9d8066ac69d2a
Total tests
466
Successful since
#749 ()

Tests

Code commits

Author Commit Message Commit date
Emiel van der Herberg <emiel.van.der.herberg@marviq.com> Emiel van der Herberg <emiel.van.der.herberg@marviq.com> 41ab11222844470dd03da58327d9d8066ac69d2a OF-2294: Consistency check does not just check number of room occupants, but the occupants themselves as well
Guus der Kinderen Guus der Kinderen b5292c7217dcaf951ac4fe3059b54e0f9ad94463 OF-2298: Reverse order of cluster event listeners
To be able to distinguish between the cause for an occupant to 'leave' a MUC room, it is important that we reverse the order in which the Cluster event listeners are fired.

Without this change, the SessionManager/RoutingTable would mark a user as unavailable. As a result of that, the MUC implementation would make the corresponding occupant leave the room, as if it sent a presence unavailable. By ensuring that the MUC-based cluster event listener is invoked first, the cause (a cluster breakage) for the occupant to become unavailable is known. This can be used to add status code 333 to the presence unavailable that is sent on behalf of the occupant that is dropping out.
Guus der Kinderen Guus der Kinderen 73ef4cf682b12eb56484316bcfc684ba5bf16a7f OF-2298: Add status code 333 when MUC occupant leaves caused by cluster breakage
When a cluster breaks, MUC occupants that are connected to now unavailable cluster nodes should be considered as having 'left' the room. This commit adds a status code to the corresponding presence update that indicates that this departure is due to a technical issue. See https://xmpp.org/extensions/xep-0045.html#service-error-kick
Guus der Kinderen Guus der Kinderen b430f6f85d40f0eabc8a47eebeede7a5c3e140da OF-2297: Gracefully remove 'lost' MUC Rooms (clustering)
When a cluster node breaks out of the cluster, it sometimes occur that it locally does not have access to all cache content. A common way to resolve issues surrounding this is to maintain a local copy of relevant data.

For MUC rooms, this approach is not feasible, as it would require a continuous synchronization of MUC room data (which is resource intensive).

Instead of 'recovering' lost cache data, this commit considers a MUC room that has disappeared from the cache (during a cluster leave event) to be 'broken'. Presence unavailable (with status code 333) is sent to all local occupants, indicating that they're no longer in the room.
Guus der Kinderen Guus der Kinderen 7e8e670d0397b1bb4715cb003d0fd413cf0134b9 OF-2299: Prevent NPE when processing directed presences
This NPE was observed when testing in a 3-node cluster. My assumption is that one node already caused the entry to be deleted, causing the second node to generate a NPE. Adding a null-check should be a safe way to prevent this.

Jira issues

IssueDescriptionStatus
Unknown Issue TypeOF-2294Could not obtain issue details from Jira
Unknown Issue TypeOF-2297Could not obtain issue details from Jira
Unknown Issue TypeOF-2298Could not obtain issue details from Jira
Unknown Issue TypeOF-2299Could not obtain issue details from Jira