In cases where you have a cluster of JasperReports Server instances accessing the same repository, the schedulers in each instance can sometimes conflict and send multiple emails. The behavior depends on the run-time of the reports that are scheduled, because a long report may cause the scheduler on another node to attempt to run the same report before the first node finishes.
To change this behavior, set the following parameter in <WAR-file>/WEB-INF/js.quartz.base.properties:
org.quartz.jobStore.clusterCheckinInterval = 900000
In case a job fails on the first node, the check-in interval is meant to ensure that the job runs on a second node after this delay. Because the schedulers do not communicate directly, the second scheduler cannot distinguish between a node that had a failure and a node that is still running a job. The default value corresponds to 15 minutes.
This parameter can be adjusted as follows:
|•||If you have scheduled reports that take a long time to run, longer than 15 minutes, you may see multiple emails. Increase this parameter to an interval longer than your longest report’s expected run-time.|
|•||On the other hand, if you have small reports that finish quickly, the default value means that any scheduler or node problem isn’t detected by the other scheduler before 15 minutes. If you have time-critical reports scheduled, you can lower this parameter, but the value should still exceed your longest expected report run-time.|
Restart all of your server instances after changing this parameter.