Andrey Zavodnik created AMQ-4683:
------------------------------------
Summary: Scheduler discards overdue messages on startup
Key: AMQ-4683
URL: https://issues.apache.org/jira/browse/AMQ-4683
Project: ActiveMQ
Issue Type: Bug
Components: Broker
Affects Versions: 5.8.0
Environment: Windows 7 64bit, JDK 1.6.0_26
Reporter: Andrey Zavodnik
Priority: Critical
When message is scheduled for a delivery (using AMQ_SCHEDULED_PERIOD property)
it is not posted to the queue, but saved to the scheduler’s repository instead.
If Broker instance is shut down at the time for which the message is scheduled
for a delivery, the scheduler will try to process the message at the next time
broker is started up. Due to a bug in the scheduler implementation such
messages may be dismissed rather than posted to the queue depending on the
racing conditions inside the JVM.
Actual bug resides in
org.apache.activemq.broker.scheduler.SchedulerBroker.getInternalScheduler()
method.
This method first calls JobSchedulerStoreImpl. getJobScheduler(String name)
method which in turn creates an instance of runnable JobSchedulerImpl class and
starts it.
Then SchedulerBroker registers itselfas a listener of the newly created
JobSchedulerImpl.
Unfortunately this may happen after the JobSchedulerImpl have dismissed all the
“missed” tasks as “fired” as there were no listeners configured.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira