Marcus Crafter wrote: > Hi Berin, > > On Tue, Dec 18, 2001 at 11:20:18AM -0500, Berin Loritsch wrote: > >>In what way are the same set of parameters used by different threads in >>Cocoon? >> >>We never addressed ThreadSafety as one of the Contracts for either >>Parameters >>or Configuration. >> > > Have a look at this snippet from a generated sitemap: > > ---------------------- > public class sitemap_xmap extends AbstractSitemap { > static final String LOCATION = "org.apache.cocoon.www.sitemap_xmap"; > > static { > dateCreated = 1007984808622L; > } > > /** An empty <code>Parameter</code> used to pass to the sitemap components */ > private Parameters emptyParam = new Parameters(); > > /** HashMap relating labels to view names */ > private HashMap view_label_map = new HashMap(1); > > <snip>... > > if (isSelected("userstatus", "permitted", listOfMaps, > emptyParam, objectModel)) { > ---------------------- > > The 'emptyParam' is passed into several cocoon components. If a > developer sets a parameter in a selector for example, then 2 > threads can overwrite each other with different results (the current > problem we have here).
Is emptyParam supposed to be a read-only object, or something that is started at the beginning of a pipeline? > > In Cocoon I think the problem is more fundamental in that the > parameters object is actually an instance level reference in the > sitemap object (I'm not sure if that was intended ? ie. to share > parameters between pipelines), but I think even a thread safe > parameters object would not fix thread safety there - there > needs to be a local Parameters object per thread passing through > the sitemap, or a read-only Parameters object if the developer > shouldn't be doing this at all. Yep, this can only be fixed with ThreadLocal parameters objects. > > If the Parameters object remains thread unsafe, perhaps it should be > documented in it's class level javadocs like the Collection > classes so it's obvious to the developer (I'll submit a patch if > you like ?). Sounds good. -- "They that give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety." - Benjamin Franklin -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>