Build: #854 was successful Manual run by daryl herzmann

Code commits

Openfire (master)

  • daryl herzmann <akrherz@iastate.edu>

    daryl herzmann <akrherz@iastate.edu> 5b23edcf5a8716fdd4b8ec5a09b6711b4c934468

    Merge pull request #1731 from guusdk/OF-2092_PEP-memory-leak
    PEP notification rewrite

  • Guus der Kinderen

    Guus der Kinderen e6d5e282e3441938d89ba61c5860b048e49cc8ee m

    OF-2105: Don't depend on PEP service to be cached for removal.
    The existing implementation of removal of a PEP service (which gets triggered if the owning user gets deleted) only operates on PEP services if they're currently in a cache.

    Even if the PEP service is not currently cached, it should be deleted.

    • xmppserver/src/main/java/org/jivesoftware/openfire/pep/PEPServiceManager.java (version e6d5e282e3441938d89ba61c5860b048e49cc8ee)
  • Guus der Kinderen

    Guus der Kinderen d9bc156ae986898730b4dc7584f0ff747ef76d0a m

    Pubsub: add logging around lifecycle events.

    • xmppserver/src/main/java/org/jivesoftware/openfire/pep/PEPServiceManager.java (version d9bc156ae986898730b4dc7584f0ff747ef76d0a)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/PubSubModule.java (version d9bc156ae986898730b4dc7584f0ff747ef76d0a)
  • Guus der Kinderen

    Guus der Kinderen aa68522a78dabfb7d818258675f2d0f482ab9697 m

    OF-2039: When processing CAPS changes, consider subscribed-to PEP nodes
    Apply changes to notification filtering not only to PEP nodes that belong to the service owned by the sender, but also to those that the sender subscribes to.

    • xmppserver/src/main/java/org/jivesoftware/openfire/pep/PEPServiceManager.java (version aa68522a78dabfb7d818258675f2d0f482ab9697)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/CachingPubsubPersistenceProvider.java (version aa68522a78dabfb7d818258675f2d0f482ab9697)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/DefaultPubSubPersistenceProvider.java (version aa68522a78dabfb7d818258675f2d0f482ab9697)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/InMemoryPubSubPersistenceProvider.java (version aa68522a78dabfb7d818258675f2d0f482ab9697)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/LeafNode.java (version aa68522a78dabfb7d818258675f2d0f482ab9697)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/PubSubPersistenceProvider.java (version aa68522a78dabfb7d818258675f2d0f482ab9697)
  • Guus der Kinderen

    Guus der Kinderen 97b6994eb248690242225daa34690c0179a62c2d m

    OF-2102: Prevent incorrect shutdown of pubsub persistence provider
    Do not shut down the persistence infrastructure when just one (of potentially many) pubsub services shuts down.

    This commit depends on the previous commit, in that that commit now ensures that the persistence infrastructure is shut down when appropriate.

    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/PubSubEngine.java (version 97b6994eb248690242225daa34690c0179a62c2d)
  • Guus der Kinderen

    Guus der Kinderen 76ec8bf41bf22d7f73d1bbb29bad80867d653c5d m

    OF-2092: Unload PEPService when deleting
    This avoids the instance from being stuck in memory when the service is being deleted (typically when a user gets deleted).

    • xmppserver/src/main/java/org/jivesoftware/openfire/pep/PEPServiceManager.java (version 76ec8bf41bf22d7f73d1bbb29bad80867d653c5d)
  • Guus der Kinderen

    Guus der Kinderen e29f64b4a8623f71e8cb8a5311f75b8bafeb9c73 m

    Rewire pluggable persistence provider for Pubsub
    The pluggable persistence provider for Pubsub that got introduced in OF-1988 has a lifecycle: it's gets started and stopped. It is crucial that users of the persistence providers do not interact with it unless it is running properly.

    This commit explicitly ties the lifecycle of persistence providers (through its manager) to the PubsubModule. This should help ensure that code won't be able to use a persistence provider unless other pubsub code has been initialized, or up until other pubsub state has been teared down.

    The changing in this commit work up towards a fix for OF-2102, which aims to fix the shutdown logic of Pubsub services.

    The this commit changes the signature of PubsubPersistenceProviderManager. As this code was not in a released version of Openfire yet, I didn't bother to deprecate methods that I've replaced/removed.

    • xmppserver/src/main/java/org/jivesoftware/openfire/pep/PEPService.java (version e29f64b4a8623f71e8cb8a5311f75b8bafeb9c73)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pep/PEPServiceManager.java (version e29f64b4a8623f71e8cb8a5311f75b8bafeb9c73)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/LeafNode.java (version e29f64b4a8623f71e8cb8a5311f75b8bafeb9c73)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/Node.java (version e29f64b4a8623f71e8cb8a5311f75b8bafeb9c73)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/NodeSubscription.java (version e29f64b4a8623f71e8cb8a5311f75b8bafeb9c73)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/PubSubEngine.java (version e29f64b4a8623f71e8cb8a5311f75b8bafeb9c73)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/PubSubModule.java (version e29f64b4a8623f71e8cb8a5311f75b8bafeb9c73)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/PubSubPersistenceProviderManager.java (version e29f64b4a8623f71e8cb8a5311f75b8bafeb9c73)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/cluster/FlushTask.java (version e29f64b4a8623f71e8cb8a5311f75b8bafeb9c73)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/cluster/ModifySubscriptionTask.java (version e29f64b4a8623f71e8cb8a5311f75b8bafeb9c73)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/cluster/RefreshNodeTask.java (version e29f64b4a8623f71e8cb8a5311f75b8bafeb9c73)
  • Guus der Kinderen

    Guus der Kinderen 73d5a519b6b251d90fc7684f0aeabfd4e7dfb970 m

    OF-2092: Fix PEP memory leak
    The original code registered a Entity Capability listener for every PEP Service. That implies that every PEPService instance for all users needs to remain in memory at all times, or at least while any of the owner or subscribers is online. If that isn't the case, then changes in notification filters (expressed through CAPS) might be missed, causing notifications to (not) be sent out when (in)appropriate.

    Also in the original code is an issue where the Entity Capability listener is evicted from its cache (which is time-limited), only to be replaced by another instance. As the original instance could still be active elsewhere, this newly added instance would add to the total memory usage, effectively causing a memory leak of sorts.

    This commit replaces the 'one-listener-for-each-pepservice' strategy with an implementation that registers one listener that's shared by all PEP services. This removes the need of complex lifecycle handling, and offers better opportunities to work with use cases that involve 'offline' PEP service owners.

    • xmppserver/src/main/java/org/jivesoftware/openfire/pep/IQPEPHandler.java (version 73d5a519b6b251d90fc7684f0aeabfd4e7dfb970)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pep/PEPService.java (version 73d5a519b6b251d90fc7684f0aeabfd4e7dfb970)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pep/PEPServiceInfo.java (version 73d5a519b6b251d90fc7684f0aeabfd4e7dfb970)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pep/PEPServiceManager.java (version 73d5a519b6b251d90fc7684f0aeabfd4e7dfb970)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/PubSubEngine.java (version 73d5a519b6b251d90fc7684f0aeabfd4e7dfb970)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/PubSubModule.java (version 73d5a519b6b251d90fc7684f0aeabfd4e7dfb970)
    • xmppserver/src/main/java/org/jivesoftware/openfire/pubsub/PubSubService.java (version 73d5a519b6b251d90fc7684f0aeabfd4e7dfb970)