Remove database call from CancelSubscriptionTask
The cluster task that removes a pubsub node subscription is provided in org.jivesoftware.openfire.pubsub.cluster.CancelSubscriptionTask. This task intends to 'clean up' the in-memory representation of subscription states on other cluster nodes, after the cluster node where the initial event occured has performed the 'heavy lifting' of the removal process (persisting the change in the database, notifying relevant entities, etc).
The cluster task needs not perform this 'heavy lifting' again, as that will already have been done. However, given the API that's used, each cluster node on which the task is executed (and that has the node in memory) will currently attempt to remove the subscription from the database. As this is the responsibility of the originating cluster member, these removals will have no effect, other than require database resources.
To avoid having potentially many cluster nodes execute a pointless database call, the CancelSubscriptionTask must be modified to avoid unnecessary database interactions.