Author: indika
Date: Thu May 17 02:33:35 2007
New Revision: 538847
URL: http://svn.apache.org/viewvc?view=rev&rev=538847
Log:
Fixed concurrent modification exception throwing when reporting endpoints
statistics
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/statistics/impl/EndPointStatisticsStack.java
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/statistics/impl/SequenceStatisticsStack.java
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/statistics/impl/EndPointStatisticsStack.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/statistics/impl/EndPointStatisticsStack.java?view=diff&rev=538847&r1=538846&r2=538847
==============================================================================
---
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/statistics/impl/EndPointStatisticsStack.java
(original)
+++
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/statistics/impl/EndPointStatisticsStack.java
Thu May 17 02:33:35 2007
@@ -32,7 +32,7 @@
public class EndPointStatisticsStack implements StatisticsStack {
/** list of endpoint statistics */
- private ArrayList endpointStatistics;
+ private List endpointStatistics;
/** To decide whether the reporting of the in flow statistics have been
completed*/
private boolean isCompleteInFlowStatisicsReport = false;
@@ -94,13 +94,9 @@
public void reportToStatisticsCollector(StatisticsCollector
statisticsCollector,
boolean isFault, String name) {
if (endpointStatistics != null && !endpointStatistics.isEmpty()) {
-
List tobeRemoved = new ArrayList();
-
for (Iterator epIterator = endpointStatistics.iterator();
epIterator.hasNext();) {
- System.out.println(Thread.currentThread().getName());
- Thread.dumpStack();
Object statisticsObj = epIterator.next();
if (statisticsObj instanceof EndPointStatistics) {
EndPointStatistics statistics = (EndPointStatistics)
statisticsObj;
@@ -123,7 +119,6 @@
}
}
}
-
endpointStatistics.removeAll(tobeRemoved);
}
}
@@ -135,6 +130,7 @@
public void reportAllToStatisticsCollector(StatisticsCollector
statisticsCollector,
boolean isFault) {
if (endpointStatistics != null && !endpointStatistics.isEmpty()) {
+ List tobeRemoved = new ArrayList();
for (Iterator epIterator = endpointStatistics.iterator();
epIterator.hasNext();) {
Object statisticsObj = epIterator.next();
@@ -153,11 +149,12 @@
statisticsCollector.reportForEndPoint(statistics.endPointName,
true, statistics.inTimeForOutFlow,
System.currentTimeMillis(), isFault);
- endpointStatistics.remove(statistics);
+ tobeRemoved.add(statistics);
}
}
}
}
+ endpointStatistics.removeAll(tobeRemoved);
}
isCompleteInFlowStatisicsReport = true;
}
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/statistics/impl/SequenceStatisticsStack.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/statistics/impl/SequenceStatisticsStack.java?view=diff&rev=538847&r1=538846&r2=538847
==============================================================================
---
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/statistics/impl/SequenceStatisticsStack.java
(original)
+++
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/statistics/impl/SequenceStatisticsStack.java
Thu May 17 02:33:35 2007
@@ -23,6 +23,7 @@
import java.util.ArrayList;
import java.util.Iterator;
+import java.util.List;
/**
* The data structure to hold statistics related to Sequences
@@ -32,7 +33,7 @@
public class SequenceStatisticsStack implements StatisticsStack {
/** The list to hols SequenceStatistics */
- private ArrayList sequenceStatisticsList = new ArrayList();
+ private List sequenceStatisticsList = new ArrayList();
/**
* To put a statistics
@@ -66,6 +67,7 @@
public void reportToStatisticsCollector(StatisticsCollector
statisticsCollector,
boolean isFault, String name) {
if (!sequenceStatisticsList.isEmpty()) {
+ List tobeRemoved = new ArrayList();
for (Iterator seqIterator = sequenceStatisticsList.iterator();
seqIterator.hasNext();) {
SequenceStatistics sequenceStatistics =
@@ -79,9 +81,10 @@
!sequenceStatistics.isInFlow,
sequenceStatistics.initTime,
System.currentTimeMillis(),
sequenceStatistics.isFault);
}
- sequenceStatisticsList.remove(sequenceStatistics);
+ tobeRemoved.add(sequenceStatistics);
}
}
+ sequenceStatisticsList.removeAll(tobeRemoved);
}
}
@@ -143,6 +146,21 @@
isInFlow = inFlow;
isStatisticsEnable = statisticsEnable;
this.isFault = isFault;
+ }
+
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ final SequenceStatistics that = (SequenceStatistics) o;
+
+ if (!sequenceName.equals(that.sequenceName)) return false;
+
+ return true;
+ }
+
+ public int hashCode() {
+ return sequenceName.hashCode();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]