| When multiple GeoRSS requests are made simultaneously to geoserver, fields in the resulting XML document that are populated by geoserver's template logic tend to become corrupted with data from other requests. Root cause analysis: The AtomUtils class contains a static reference to an instance of FeatureTemplate, which is explicitly not thread-safe by the comments on line 52. However, both the AtomGeoRSSTransformer (see encodeEntry method) and the RSSGeoRSSTransformer (see encodeItem method) classes ultimately rely on this single reference by way of AtomUtils method calls despite existing in a multi-threaded environment. Thus, multiple threads invoke the same FeatureTemplate instance, thereby corrupting the contents of its buffered writer, which flushes erroneous data meant for one request out to others. |