You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by "Hiranya Jayathilaka (JIRA)" <ji...@apache.org> on 2013/07/20 00:34:49 UTC
[jira] [Resolved] (SYNAPSE-853) When sending concurrent requests to
a statistics enabled sequence, getting "concurrent modification exception"
[ https://issues.apache.org/jira/browse/SYNAPSE-853?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Hiranya Jayathilaka resolved SYNAPSE-853.
-----------------------------------------
Resolution: Fixed
Thanks for pointing this out. The CopyOnWriteArrayList seems to be costly. It duplicates the underlying array on each write. I fixed the issue by using a ConcurrentLinkedQueue instead, which uses a more efficient wait-free synchronization algorithm.
> When sending concurrent requests to a statistics enabled sequence, getting "concurrent modification exception"
> --------------------------------------------------------------------------------------------------------------
>
> Key: SYNAPSE-853
> URL: https://issues.apache.org/jira/browse/SYNAPSE-853
> Project: Synapse
> Issue Type: Bug
> Components: Tracing and Statistics
> Affects Versions: 2.1
> Reporter: Vijayaratha Vijayasingam
> Assignee: Hiranya Jayathilaka
> Priority: Critical
> Fix For: NIGHTLY
>
> Attachments: statisticsReport.patch
>
>
> When sending concurrent requests(tps~=250) for a statistics enabled sequence, I'm getting "ConcurrentModificationException" [1]
> @ StatisticsRecord class, Arraylist(which is not thread safe), is used to collect all statistics logs. ..
> Instead of Arraylist, we can use "CopyOnWriteArrayList" which is thread safe and allows multiple concurrent reads, and for reads to occur concurrently with a write..
> I tested with this option and did not notice any considerable performance change..
> [1][2012-03-14 22:10:16,398] ERROR - StatisticsReporterThread Error while collecting and reporting mediation statistics
> java.util.ConcurrentModificationException
> at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
> at java.util.AbstractList$Itr.next(AbstractList.java:343)
> at org.apache.synapse.aspects.statistics.StatisticsRecord.getAllLogIds(StatisticsRecord.java:88)
> at org.apache.synapse.aspects.statistics.view.SystemViewStrategy.determineView(SystemViewStrategy.java:61)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@synapse.apache.org
For additional commands, e-mail: dev-help@synapse.apache.org