[
https://jira.jboss.org/jira/browse/JBAS-5999?page=com.atlassian.jira.plug...
]
Alexey Loubyansky closed JBAS-5999.
-----------------------------------
Fix Version/s: JBossAS-5.0.0.GA
JBossAS-4.2.4.GA
Resolution: Done
Fixed. Thanks.
EJBTimerServiceImpl timerServiceMap access should be synchronized
-----------------------------------------------------------------
Key: JBAS-5999
URL:
https://jira.jboss.org/jira/browse/JBAS-5999
Project: JBoss Application Server
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: EJB2
Affects Versions: JBossAS-4.2.3.GA, JBossAS-5.0.0.CR2
Reporter: Mike Millson
Assignee: Alexey Loubyansky
Fix For: JBossAS-5.0.0.GA, JBossAS-4.2.4.GA
The timerServiceMap in org.jboss.ejb.txtimer.EJBTimerServiceImpl should be
synchronized[1].
Original code: // Maps the timedObjectId to TimerServiceImpl objects
private Map timerServiceMap = Collections.synchronizedMap(new HashMap());
public void removeTimerService(ObjectName containerId, boolean keepState) throws
IllegalStateException
{
// remove all timers with the given containerId
Iterator it = timerServiceMap.entrySet().iterator();
while (it.hasNext())
{
Map.Entry entry = (Map.Entry)it.next();
TimedObjectId key = (TimedObjectId)entry.getKey();
TimerServiceImpl timerService = (TimerServiceImpl)entry.getValue();
if (containerId.equals(key.getContainerId()))
{
log.debug("removeTimerService: " + timerService);
timerService.shutdown(keepState);
it.remove();
}
}
}
Fixed:
public void removeTimerService(ObjectName containerId, boolean keepState) throws
IllegalStateException
{
// remove all timers with the given containerId
synchronized(timerServiceMap)
{
Iterator it = timerServiceMap.entrySet().iterator();
while (it.hasNext())
{
Map.Entry entry = (Map.Entry)it.next();
TimedObjectId key = (TimedObjectId)entry.getKey();
TimerServiceImpl timerService = (TimerServiceImpl)entry.getValue();
if (containerId.equals(key.getContainerId()))
{
log.debug("removeTimerService: " + timerService);
timerService.shutdown(keepState);
it.remove();
}
}
}
}
[
1]http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html#sync...
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira