activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Burgel (JIRA)" <>
Subject [jira] Created: (AMQ-1235) Scheduler.cancel uses incorrect argument to shutdown threads
Date Tue, 24 Apr 2007 13:03:34 GMT
Scheduler.cancel uses incorrect argument to shutdown threads

                 Key: AMQ-1235
             Project: ActiveMQ
          Issue Type: Bug
    Affects Versions: 4.1.1
            Reporter: Alex Burgel
            Priority: Critical

looking at the code from 4.1.1 in org.apache.activemq.thread.Scheduler, in the cancel method:

the Runnable task argument is passed to clockDaemon.remove(). i think this is incorrect. ScheduledFuture
ticket should be passed to clockDaemon.remove().

the javadocs of ScheduledThreadPoolExecutor.remove discuss the possibility that Runnables
might be stored in some other form internally, so calling remove with a plain Runnable might
not do anything. I think the solution is to call remove with a ScheduledFuture, which is how
they are stored internally in ScheduledThreadPoolExecutor.

i came across this bug after upgrading to the java 5 version of backport-util-concurrent 3.0.
that version makes more assumptions about the types that are passed into ScheduledThreadPoolExecutor.remove,
so when you pass in a regular Runnable you'll get a ClassCastException.

this is trivial to fix, so i don't think a patch is necessary. also i think this might address
the memory leak mentioned in AMQ-1205

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message