code.onehippo.org is currently readonly. We are migrating to code.bloomreach.com, please continue working there on Monday 14/12. See: https://docs.bloomreach.com/display/engineering/GitLab

Commit 075c95c1 authored by Ard Schrijvers's avatar Ard Schrijvers

REPO-1915 Make sure to have latest jcr node states instead of possibly stale nodes

Since the lock via the LockManager does not involve any jcr locking, it
does *never* trigger a cluster sync. This means that we can get the lock
for a node that has been processed and finished just by another cluster
node that also already freed the lock again. Making sure that after we
obtained the lock to invoke a session refresh should result in that
#isPendingTrigger returns false if another cluster node already did
process the job.
parent 305da3cd
...@@ -584,6 +584,7 @@ public class JCRJobStore implements JobStore { ...@@ -584,6 +584,7 @@ public class JCRJobStore implements JobStore {
} }
LockResource lockResource = lock(jobNode, triggerNode); LockResource lockResource = lock(jobNode, triggerNode);
if (lockResource != null) { if (lockResource != null) {
session.refresh(false);
try { try {
// double check nextFireTime now that we have a lock // double check nextFireTime now that we have a lock
if (isPendingTrigger(triggerNode, noLaterThan)) { if (isPendingTrigger(triggerNode, noLaterThan)) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment