Uploaded image for project: 'Application Server 3  4  5 and 6'
  1. Application Server 3 4 5 and 6
  2. JBAS-5999

EJBTimerServiceImpl timerServiceMap access should be synchronized

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • JBossAS-5.0.0.GA
    • JBossAS-4.2.3.GA, JBossAS-5.0.0.CR2
    • EJB2
    • None

      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#synchronizedMap(java.util.Map

              olubyans@redhat.com Alexey Loubyansky
              rhn-support-mmillson Michael Millson
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved: