Hi Jondean, best would be a JIRA ticket (+ patch). The discussion of the issue (and the patch) should be done here, on the DEV list.
-Matthias On Sun, Jan 4, 2009 at 12:16 AM, Jondean Haley <[email protected]> wrote: > Hi, > > I just joined this d-list. What is the preferred way to raise bugs > discovered in reading the code? Do you wish to have a JIRA ticket opened or > a note sent to this d-list? > > Issue in 1.2.5: LifeCycleFactoryImpl is not thread-safe. _lifecycles Map > must be locked for all read and write accesses and a race condition exists > due to failure to lock in getLifecycleIds and purgeLifecycle. > > Similarly, 1.2.5 FactoryFinder is not thread-safe - the binary predicate on > the 2 instance variables should be documented as below, and requires lock > protection which the synch on either variable alone does not provide. > > /* > * //JAH: _registeredFactoryNames and _factories are the only non-final > instance variables and share a binary predicate: > * The former is a map (classloader object, (string factoryname, List of > strings of factory class names)) > * The latter is a map (classloader object, (string factoryname, List of > instances of the factory classes)) > * The predicate is "For each string factory class name in > _registeredFactoryNames, there exists, at the same index in its list as the > name, an instance of the > * class in _factories. This binary predicate is in addition to the > standard requirement to synch all read/writes to the non-threadsafe > HashMaps. > * Every predicate requires a unique lock for thread safety. Since these 2 > instance variables are the ONLY mutable state of the object, all reads and > writes can > * be synch'd via the object monitor - use synchronized methods on all > methods reading or writing from either variable, thereby making the object > monitor the lock > * for protection of all 3 predicates. > */ > A simple solution is to synchronize all 3 public methods: getFactory, > setFactory and releaseFactories, then document the binary predicate over the > instance variable and ensure the code is correctly honoring the predicate > within the synch'd methods. > > > > Thanks in advance, > Jondean. > > > > -- Matthias Wessendorf blog: http://matthiaswessendorf.wordpress.com/ sessions: http://www.slideshare.net/mwessendorf twitter: http://twitter.com/mwessendorf
