[ https://issues.apache.org/jira/browse/AMQ-4683?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrey Zavodnik reopened AMQ-4683: ---------------------------------- > 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 > Assignee: Timothy Bish > Priority: Critical > Labels: scheduler > Fix For: 5.9.0 > > Attachments: LostScheduledMessagesTest.java > > > 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