You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Timothy Bish (JIRA)" <ji...@apache.org> on 2018/06/27 13:24:00 UTC
[jira] [Reopened] (AMQ-7002) Activemq SchedulerBroker doSchedule
can schedule duplicate jobIds leading to runtime exception
[ https://issues.apache.org/jira/browse/AMQ-7002?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Timothy Bish reopened AMQ-7002:
-------------------------------
-1
No regression testing added for existing store, please revert and provide tests.
> Activemq SchedulerBroker doSchedule can schedule duplicate jobIds leading to runtime exception
> -----------------------------------------------------------------------------------------------
>
> Key: AMQ-7002
> URL: https://issues.apache.org/jira/browse/AMQ-7002
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker, Job Scheduler
> Affects Versions: 5.15.4
> Environment: Java 8
> AMQ 5.15.4
> Reporter: Jamie goodyear
> Assignee: Gary Tully
> Priority: Major
> Fix For: 5.16.0
>
> Attachments: amq7002-master.patch
>
>
> Under load we've observed that SchedulerBroker will attempt to schedule jobs using the same JobId.
> When JobScheduleView attempts to process these jobs we'll encounter an exception during the below put call:
> {color:#bbb529}@Override{color}{color:#cc7832}public {color}TabularData {color:#ffc66d}getAllJobs{color}() {color:#cc7832}throws {color}Exception {
> OpenTypeFactory factory = OpenTypeSupport.getFactory(Job.{color:#cc7832}class{color}){color:#cc7832};{color} CompositeType ct = factory.getCompositeType(){color:#cc7832};{color} TabularType tt = {color:#cc7832}new {color}TabularType({color:#6a8759}"Scheduled Jobs"{color}{color:#cc7832}, {color}{color:#6a8759}"Scheduled Jobs"{color}{color:#cc7832}, {color}ct{color:#cc7832}, new {color}String[] { {color:#6a8759}"jobId" \{color}});{color} TabularDataSupport rc = {color:#cc7832}new {color}TabularDataSupport(tt){color:#cc7832};{color} List<Job> jobs = {color:#cc7832}this{color}.{color:#9876aa}jobScheduler{color}.getAllJobs(){color:#cc7832};{color}{color:#cc7832} for {color}(Job job : jobs) {
> rc.put({color:#cc7832}new {color}CompositeDataSupport(ct{color:#cc7832}, {color}factory.getFields(job))){color:#cc7832};{color} }
> {color:#cc7832}return {color}rc;
> \{color}}
> This can be triggered by clicking on the Schduled tab in the webconsole.
> The error only occurs due to duplicate JobIds.
> Debugging this error, we can see that two jobs with different payloads have the same JobId - this should not be allowed to occur.
> We need to ensure that JobIds are unique.
> Note:
> In test scenario virtual topics are in use, with two consumers.
> Redelivery plugin is also in use on the Broker.
> <plugins>
> <redeliveryPlugin fallbackToDeadLetter="false" sendToDlqIfMaxRetriesExceeded="false">
> <redeliveryPolicyMap>
> <redeliveryPolicyMap>
> <defaultEntry>
> <redeliveryPolicy backOffMultiplier="2" initialRedeliveryDelay="60000" maximumRedeliveries="20" maximumRedeliveryDelay="300000" useExponentialBackOff="true"/>
> </defaultEntry>
> </redeliveryPolicyMap>
> </redeliveryPolicyMap>
> </redeliveryPlugin>
> </plugins>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)