Since Openfire 4.7.0, a new API is available that ensures that MUC data is synchronized across Openfire cluster nodes. This commit adds support for this API.
As a result, data consistency with regards to MUC-related data (chatrooms, mostly), should improve.
This commit contains two related changes:
Invocation of service.syncChatRoom() after room changes, to ensure that those changes are visible to other cluste nodes.
Application of room-specific mutexes when rooms are interacted with.
The addition of an additional mutex typically comes with a risk of introducing a deadlock-like scenario. As a mitigation for this, a new property has been introduced that controls if the mutex is engaged when the REST API interacts with MUC rooms.
The property name is plugin.restapi.muc.room-mutex.enabled and is enabled by default. To prevent mutex usage, this property can be switced to false.
Since Openfire 4.7.0, a new API is available that ensures that MUC data is synchronized across Openfire cluster nodes. This commit adds support for this API.
As a result, data consistency with regards to MUC-related data (chatrooms, mostly), should improve.
This commit contains two related changes:
service.syncChatRoom()
after room changes, to ensure that those changes are visible to other cluste nodes.The addition of an additional mutex typically comes with a risk of introducing a deadlock-like scenario. As a mitigation for this, a new property has been introduced that controls if the mutex is engaged when the REST API interacts with MUC rooms.
The property name is
plugin.restapi.muc.room-mutex.enabled
and is enabled by default. To prevent mutex usage, this property can be switced tofalse
.