Author: gnodet
Date: Wed Sep 26 05:01:18 2007
New Revision: 579625

URL: http://svn.apache.org/viewvc?rev=579625&view=rev
Log:
SM-1061: Race condition in RSS feed-writer component

Modified:
    
incubator/servicemix/branches/servicemix-3.1/common/servicemix-components/src/main/java/org/apache/servicemix/components/rss/FeedWriter.java

Modified: 
incubator/servicemix/branches/servicemix-3.1/common/servicemix-components/src/main/java/org/apache/servicemix/components/rss/FeedWriter.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/branches/servicemix-3.1/common/servicemix-components/src/main/java/org/apache/servicemix/components/rss/FeedWriter.java?rev=579625&r1=579624&r2=579625&view=diff
==============================================================================
--- 
incubator/servicemix/branches/servicemix-3.1/common/servicemix-components/src/main/java/org/apache/servicemix/components/rss/FeedWriter.java
 (original)
+++ 
incubator/servicemix/branches/servicemix-3.1/common/servicemix-components/src/main/java/org/apache/servicemix/components/rss/FeedWriter.java
 Wed Sep 26 05:01:18 2007
@@ -67,7 +67,7 @@
     private SourceTransformer sourceTransformer = new SourceTransformer();
     private boolean loadOnStartup = true;
 
-    public SyndFeed getCachedFeed() throws IllegalArgumentException, 
FeedException, IOException {
+    public synchronized SyndFeed getCachedFeed() throws 
IllegalArgumentException, FeedException, IOException {
         if (cachedFeed == null) {
             cachedFeed = loadOrCreateFeed();
         }
@@ -187,9 +187,11 @@
 
     protected void process(MessageExchange exchange, NormalizedMessage 
message) throws Exception {
         SyndFeed feed = getCachedFeed();
-        addMessageToFeed(feed, exchange, message);
-        removeExpiredEntries(feed);
-        writeFeed(feed, exchange, message);
+        synchronized (feed) {
+            addMessageToFeed(feed, exchange, message);
+            removeExpiredEntries(feed);
+            writeFeed(feed, exchange, message);
+        }
         done(exchange);
     }
 


Reply via email to