[
https://issues.apache.org/jira/browse/AMQ-4683?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrey Zavodnik updated AMQ-4683:
---------------------------------
Attachment: LostScheduledMessagesTest.java
Test case. As the issue affected by race condition, the test may not fail every
time, but it does fail often
> 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
> Labels: scheduler
> 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