You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by hi...@apache.org on 2013/07/20 00:32:41 UTC

svn commit: r1505057 - /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsRecord.java

Author: hiranya
Date: Fri Jul 19 22:32:40 2013
New Revision: 1505057

URL: http://svn.apache.org/r1505057
Log:
Fixing SYNAPSE-853 - Concurrency issue in endpoint stat collection. Used a ConcurrentLinkedQueue instead of the ArrayList to collect stat logs in a thread safe manner.

Modified:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsRecord.java

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsRecord.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsRecord.java?rev=1505057&r1=1505056&r2=1505057&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsRecord.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsRecord.java Fri Jul 19 22:32:40 2013
@@ -23,6 +23,8 @@ import org.apache.synapse.aspects.Compon
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
 
 /**
  * Holds a record for statistics for current message
@@ -31,7 +33,7 @@ import java.util.List;
 public class StatisticsRecord {
 
     private String id;
-    private final List<StatisticsLog> statisticsLogs = new ArrayList<StatisticsLog>();
+    private final Queue<StatisticsLog> statisticsLogs = new ConcurrentLinkedQueue<StatisticsLog>();
     private String clientIP;
     private String clientHost;
     private ComponentType owner;
@@ -118,7 +120,7 @@ public class StatisticsRecord {
     }
 
     public String toString() {
-        return new StringBuffer()
+        return new StringBuilder()
                 .append("[Message id : ").append(id).append(" ]")
                 .append("[Remote  IP : ").append(clientIP).append(" ]")
                 .append("[Remote host : ").append(clientHost).append(" ]")