This might be introduced by my work on / et al, which are as of yet unmerged, and have never been part of a release. I've not verified this bug on an actual released version of Openfire.
When a cluster node (that had a client connection) leaves the cluster, the cluster-wide state of the affect clients should (but is not) updated.
There are two issues:
org.jivesoftware.openfire.SessionManager#sessionInfoCache entries are not cleaned up.
unavailable presence is not sent on behalf of the now unavailable client connections.
Start a cluster with two nodes, A and B.
Create two users, X and Y.
Ensure that both users are on each-others roster.
Have user X create a client connection to node A
Have user Y create a client connection to node B
Observe that both users have received 'available' presence from eachother (see eachother as 'online').
Shut down node B
User X should receive 'unavailable' presence for user Y (User X should see user Y go offline).