Build: #1022 was successful

Job: Mac Build Workflow was successful

Stages & jobs

  1. Build and Package

Code commits

Openfire (master)

  • Guus der Kinderen

    Guus der Kinderen 47ecde13e5c65284b396eca9c2ee2a26ce5aa3ab

    Fix wording of alert

    • xmppserver/src/main/java/org/jivesoftware/util/cache/ConsistencyChecks.java (version 47ecde13e5c65284b396eca9c2ee2a26ce5aa3ab)
  • Guus der Kinderen

    Guus der Kinderen 0e84be7d1b86b8b2acff6da2b0215f6f2352b591

    OF-2313: Do not depend on clustered cache when resolving cluster outage
    Code that facilitates working with incoming server sessions previously depended on two caches. The 'second' cache stored 'validatedDomains' information. This comment was added:

    > Content is stored in a clustered cache so that even in the case of the node hosting the sessions is lost we can still have access to this info to be able to perform proper clean up logic

    We now know that in case of an incident that involves losing a cluster node, the content of caches cannot be depended on (instead, local copies of cached data needs to be maintained).

    This commit removes the second cache, replacing it with a construct that keeps 'validatedDomains' info in both the primary cache, as well as locally-stored data.

    • xmppserver/src/main/java/org/jivesoftware/openfire/SessionManager.java (version 0e84be7d1b86b8b2acff6da2b0215f6f2352b591)
    • xmppserver/src/main/java/org/jivesoftware/openfire/session/IncomingServerSessionInfo.java (version 0e84be7d1b86b8b2acff6da2b0215f6f2352b591)
    • xmppserver/src/main/java/org/jivesoftware/openfire/session/IncomingServerSessionTask.java (version 0e84be7d1b86b8b2acff6da2b0215f6f2352b591)
    • xmppserver/src/main/java/org/jivesoftware/openfire/session/RemoteIncomingServerSession.java (version 0e84be7d1b86b8b2acff6da2b0215f6f2352b591)
    • xmppserver/src/main/java/org/jivesoftware/openfire/session/RemoteSessionTask.java (version 0e84be7d1b86b8b2acff6da2b0215f6f2352b591)
    • xmppserver/src/main/java/org/jivesoftware/util/cache/ConsistencyChecks.java (version 0e84be7d1b86b8b2acff6da2b0215f6f2352b591)
    • xmppserver/src/main/java/org/jivesoftware/util/cache/ConsistencyMonitor.java (version 0e84be7d1b86b8b2acff6da2b0215f6f2352b591)
    • xmppserver/src/main/webapp/system-clustering-data-consistency-check.jsp (version 0e84be7d1b86b8b2acff6da2b0215f6f2352b591)
  • Guus der Kinderen

    Guus der Kinderen f4af42ccc4ca926f2ad73dde3d7d1853bc9f4a81

    OF-2311: Remove resumable state when closing remote sessions
    When a cluster node closes a (client) session that lives on a different cluster node, it's is very likely that this session is never going to be resumed (XEP-0198): the other node presumably has a good reason to want to close it (eg: replacing it with another session in IQBindHandler).

    This commit ensures that a session on a different cluster node does not fall in a 'resumable' state when it is closed by another cluster node.

    • xmppserver/src/main/java/org/jivesoftware/openfire/handler/IQBindHandler.java (version f4af42ccc4ca926f2ad73dde3d7d1853bc9f4a81)
    • xmppserver/src/main/java/org/jivesoftware/openfire/session/RemoteSessionTask.java (version f4af42ccc4ca926f2ad73dde3d7d1853bc9f4a81)
  • Guus der Kinderen

    Guus der Kinderen 69686dc594287d5f1d6cba85cf0258ffb323c859

    OF-2300: Detect and recover 'lost' cache data after cluster breakage
    When a cluster node drops out of a cluster, it might be unable to retrieve cache entries. This means that those cache entries are effectively lost.

    To work around this, relevant caches are supported by local data structures that can be used to re-populate these caches.

    This commit detects and recovers entries that is lost in caches (as described above) for all caches in SessionManager and RoutingTableImpl

    • xmppserver/src/main/java/org/jivesoftware/openfire/SessionManager.java (version 69686dc594287d5f1d6cba85cf0258ffb323c859)
    • xmppserver/src/main/java/org/jivesoftware/openfire/spi/RoutingTableImpl.java (version 69686dc594287d5f1d6cba85cf0258ffb323c859)
  • Guus der Kinderen

    Guus der Kinderen ad4533eda5294b0c7cdd13942deca84d08894d0d

    Replaced term 'hostname' with 'domain' where appropriate in SessionManager
    Older versions of Openfire used the term 'hostname' and 'domain' interchangebly. With clustering though, a single XMPP domain can consists of multiple servers, that each have their own hostname.

    This commit replaces most references to the word 'hostname' with 'domain' in the implementation of SessionManager. No functional changes are intended.

    • xmppserver/src/main/java/org/jivesoftware/openfire/SessionManager.java (version ad4533eda5294b0c7cdd13942deca84d08894d0d)
  • Guus der Kinderen

    Guus der Kinderen 44497c3cb9070be22fa665b83b311f74661c4409

    OF-2308: Prevent MUC nickname change to reserved nickname
    When another user reserved a nickname in a MUC, another user should not be able to change its nickname to that reserved value after joining the room.

    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/MUCRoom.java (version 44497c3cb9070be22fa665b83b311f74661c4409)
    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/MultiUserChatServiceImpl.java (version 44497c3cb9070be22fa665b83b311f74661c4409)
  • Guus der Kinderen

    Guus der Kinderen 2f111994af3ef1d64699b65166a05123448fc348

    OF-2305: Do not treat nickname change as a join
    Openfire tries to accomodate clients that think that they're no longer in the room, while they are. Sadly, this code does not distinguish between that scenario, and a scenario in which a client triest to change a nickname in the room. This commit adds that differentation.

    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/MultiUserChatServiceImpl.java (version 2f111994af3ef1d64699b65166a05123448fc348)
  • Guus der Kinderen

    Guus der Kinderen 1d34cd66adf9b787ae175d1348bbdc425c4ce33b

    OF-2307: Allow nickname change to existing nickname of same user
    When a user is joined a room with two different nicknames, it should be allowed to rename one of its nicknames into the other, without a conflict being raised.

    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/MultiUserChatServiceImpl.java (version 1d34cd66adf9b787ae175d1348bbdc425c4ce33b)
  • Guus der Kinderen

    Guus der Kinderen acbc50f338ed3e21139f412271bd88517eb9f3c1

    OF-2304: Non-MUC-occupants should not be able to change nicknames
    The code that detects if the requestor of a nickname change is an occupant in the room needs fixing.

    Many thanks to @MightyMop for identifying this problem and suggesting a fix.

    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/MultiUserChatServiceImpl.java (version acbc50f338ed3e21139f412271bd88517eb9f3c1)
  • Guus der Kinderen

    Guus der Kinderen 46ae93c22be1eb576c4e92c7fca1669cbf99c7de

    OF-2293: Prevent duplicate MUC occupants from existing
    This commit prevents an occupant to be added to a room that already has that same occupant. This has been observed in the wild (while testing new MUC/Clustering code).

    The changes in this commit do not take away the cause of the duplicated addition, which are unknown at this time. The change does take away the direct event (preventing the duplicate from being added), and logs an error message that contains a stack trace. Hopefully that can be used in the future to find the cause of the issue.

    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/MUCRoom.java (version 46ae93c22be1eb576c4e92c7fca1669cbf99c7de)
  • Emiel van der Herberg <emiel.van.der.herberg@marviq.com>

    Emiel van der Herberg <emiel.van.der.herberg@marviq.com> 88f2b6a3a3c8df71cf59bb93e16d7cd65aba1d9e

    More informative logging of sequence of occupant management in cluster events.

    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/cluster/SyncLocalOccupantsAndSendJoinPresenceTask.java (version 88f2b6a3a3c8df71cf59bb93e16d7cd65aba1d9e)
    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/OccupantManager.java (version 88f2b6a3a3c8df71cf59bb93e16d7cd65aba1d9e)
  • Emiel van der Herberg <emiel.van.der.herberg@marviq.com>

    Emiel van der Herberg <emiel.van.der.herberg@marviq.com> 655b5afae8f048f11d0743c88eb0efc313761473

    Postpone informing other cluster members of new member join until the new member has finished cleaning up old data.

    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/cluster/NewClusterMemberJoinedTask.java (version 655b5afae8f048f11d0743c88eb0efc313761473)
    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/OccupantManager.java (version 655b5afae8f048f11d0743c88eb0efc313761473)
  • daryl herzmann <akrherz@iastate.edu>

    daryl herzmann <akrherz@iastate.edu> 7cf9e0a9e69855e19cc2bee95da24eec9373437c

    Merge pull request #1892 from guusdk/OF-2303_unused-field
    OF-2303: Remove unused field

  • Guus der Kinderen

    Guus der Kinderen 94cca87f0c5d916375594cd4007cc15012e04e65

    OF-2303: Remove unused field

    • xmppserver/src/main/java/org/jivesoftware/openfire/SessionManager.java (version 94cca87f0c5d916375594cd4007cc15012e04e65)
  • 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

    • xmppserver/src/main/java/org/jivesoftware/util/cache/ConsistencyChecks.java (version 41ab11222844470dd03da58327d9d8066ac69d2a)
  • 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

    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/MultiUserChatServiceImpl.java (version 73ef4cf682b12eb56484316bcfc684ba5bf16a7f)
  • 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.

    • xmppserver/src/main/java/org/jivesoftware/openfire/SessionManager.java (version b5292c7217dcaf951ac4fe3059b54e0f9ad94463)
    • xmppserver/src/main/java/org/jivesoftware/openfire/handler/PresenceUpdateHandler.java (version b5292c7217dcaf951ac4fe3059b54e0f9ad94463)
    • xmppserver/src/main/java/org/jivesoftware/openfire/spi/RoutingTableImpl.java (version b5292c7217dcaf951ac4fe3059b54e0f9ad94463)
  • 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.

    • xmppserver/src/main/java/org/jivesoftware/openfire/SessionManager.java (version b430f6f85d40f0eabc8a47eebeede7a5c3e140da)
    • xmppserver/src/main/java/org/jivesoftware/openfire/handler/PresenceUpdateHandler.java (version b430f6f85d40f0eabc8a47eebeede7a5c3e140da)
    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/LocalMUCRoomManager.java (version b430f6f85d40f0eabc8a47eebeede7a5c3e140da)
    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/MultiUserChatServiceImpl.java (version b430f6f85d40f0eabc8a47eebeede7a5c3e140da)
  • 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.

    • xmppserver/src/main/java/org/jivesoftware/openfire/handler/PresenceUpdateHandler.java (version 7e8e670d0397b1bb4715cb003d0fd413cf0134b9)
  • Guus der Kinderen

    Guus der Kinderen 28b35d515cc54f4d15627e5dce5732bda7ca273b

    OF-2296: Remove duplicate event listener registration
    By registering MultiUserChatServiceImpl as a ClusterEventListener twice, it gets invoked more than once, which can cause problems.

    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/MultiUserChatServiceImpl.java (version 28b35d515cc54f4d15627e5dce5732bda7ca273b)