Details
-
New Feature
-
Status: Closed
-
Major
-
Resolution: Fixed
-
Event 2.4.2
-
None
Description
The Sling eventing currently uses session scoped locks to prevent two cluster nodes to process the same job.
Unfortunately, Jackrabbit does currently not support session scoped locks in a cluster.
Another way would be to use open scoped locks. We could implement a heartbeat functionality which detects if a cluster node is not available anymore and any other node in the cluster unlocks the
locked nodes. Unfortunately, this doesn't work in Jackrabbit either, as the lock handling is implemented in a very strict way and only the session which created the lock can unlock it (or the other session
needs the lock token) - I'll create an enhancement bug for this in Jackrabbit
If no cluster is used at all, we could skip the locking completly and therefore reduce the load on the repository
Therefore we could make a lock manager with a locking mode configuration of "session scoped", "open scoped", and "none"
As an additional note, if one want to use Jackrabbit and the Sling eventing in a clustered environment - one working approach is to disable job execution on all but a single cluster node - this can be done by setting the jobmanager.enabled configuration property for the JobManager