If using CMT having a idleWaitTime set to a value higher than the trigger fire time of the last scheduled job can cause the trigger to misfire.
More details are at forum post http://forums.terracotta.org/forums/posts/list/5779.page
Relates to JIRA task https://jira.terracotta.org/jira/browse/QTZ-203
I've fixed this issue in the attached patch. In this change JobStoreCMT will use transaction synchronization to signal scheduling change. This will not affect anyone who is using JobStoreTX or RAMJobStore. I have tested this changes on JBOSS, WebSphere and Weblogic.
Transaction synchronization is done using the TransactionSynchronizationRegistry class. By default, JobStoreCMT looks for TransactionSynchronizationRegistry in JNDI under name "java:TransactionSynchronizationRegistry". If this is not where your Application Server registers it, you can modify the JNDI lookup location using the "org.quartz.jobStore.transactionSynchronizationRegistryJNDIName" property.