Build: #246 was successful Scheduled with changes by Guus der Kinderen
Code commits
Openfire (master)
-
Guus der Kinderen 4f9fa577d381982493a19659bdd96cf396adb40e
OF-2531: Remove unneeded JID-based lock in MUC
To fix https://igniterealtime.atlassian.net/browse/OF-1649 a user/JID-based lock was introduced. This lock made the creation of a user-and-joining-a-room atomic with respect to the cleanup action remove-all-users-that-are-not-in-any-room.
With the rewrite of MUC in https://igniterealtime.atlassian.net/browse/OF-2224 (and friends), the cleanup of users is no longer based on room membership, but on duration since last activity. This will prevent https://igniterealtime.atlassian.net/browse/OF-1649. The lock that was put in place now no longer serves a purpose, and should be removed.- xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/MultiUserChatServiceImpl.java (version 4f9fa577d381982493a19659bdd96cf396adb40e)
-
Guus der Kinderen 8ea20d392fe85aacf8e7eb834de05cc11fbc7291
OF-2530: Optimize MUC Message History cache usage
When reading or writing cached MUC messages, the entire collection of messages is serialized between cluster nodes. This adds an unacceptable amount of overhead, for every message that is added.
In this commit, the singular cached entity (a list of messages), is separated into two parts:
- A cached entity that represents a list of message references per chatroom
- messages, by reference
The purpose of this is to optimize the scenario of adding a message (which is expected to happen more frequently than reading the history). By having to update only a list of references, instead of a list of actual objects, the amount of data that is to be operated on is reduced significantly.- xmppserver/src/main/java/org/jivesoftware/openfire/muc/HistoryStrategy.java (version 8ea20d392fe85aacf8e7eb834de05cc11fbc7291)
- xmppserver/src/main/java/org/jivesoftware/util/cache/CacheFactory.java (version 8ea20d392fe85aacf8e7eb834de05cc11fbc7291)