[ https://issues.apache.org/jira/browse/POOL-191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13129060#comment-13129060 ]
Gary D. Gregory commented on POOL-191: -------------------------------------- Created [LANG-762] Handle or document ReflectionToStringBuilder and ToStringBuilder for collections that are not thread safe https://issues.apache.org/jira/browse/LANG-762 > ConcurrentModificationException in GenericObjectPool LinkedList > --------------------------------------------------------------- > > Key: POOL-191 > URL: https://issues.apache.org/jira/browse/POOL-191 > Project: Commons Pool > Issue Type: Bug > Affects Versions: 1.5.6 > Environment: Apache Maven 3.0.3 (r1075438; 2011-02-28 12:31:09-0500) > Maven home: C:\Java\apache-maven-3.0.3\bin\.. > Java version: 1.6.0_24, vendor: Sun Microsystems Inc. > Java home: C:\Program Files\Java\jdk1.6.0_24\jre > Default locale: en_US, platform encoding: Cp1252 > OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows" > Reporter: Gary D. Gregory > > It is possible to get a {{ConcurrentModificationException}} in a > {{LinkedList}} from a {{GenericObjectPool}}. > This happens when I call {{ReflectionToStringBuilder.toString(this)}} from a > subclass of {{GenericObjectPool}}. My guess is that it would happen with just > {{ReflectionToStringBuilder.toString(gop)}}. IOW, subclassing does not have > anything to do with it I would venture. > For example, in this stack trace {{JmsSessionPool}} is a subclass of > {{GenericObjectPool}}. > {noformat} > java.util.ConcurrentModificationException > at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:761) > at java.util.LinkedList$ListItr.next(LinkedList.java:696) > at java.util.AbstractCollection.toString(AbstractCollection.java:421) > at java.lang.String.valueOf(String.java:2826) > at java.lang.StringBuffer.append(StringBuffer.java:219) > at > org.apache.commons.lang3.builder.ToStringStyle.appendDetail(ToStringStyle.java:598) > at > org.apache.commons.lang3.builder.ToStringStyle.appendInternal(ToStringStyle.java:473) > at > org.apache.commons.lang3.builder.ToStringStyle.append(ToStringStyle.java:436) > at > org.apache.commons.lang3.builder.ToStringBuilder.append(ToStringBuilder.java:848) > at > org.apache.commons.lang3.builder.ReflectionToStringBuilder.appendFieldsIn(ReflectionToStringBuilder.java:528) > at > org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(ReflectionToStringBuilder.java:692) > at > org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(ReflectionToStringBuilder.java:288) > at > org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(ReflectionToStringBuilder.java:119) > at > com.seagullsw.appinterface.comm.jms.JmsSessionPool.toString(JmsSessionPool.java:120) > at java.lang.String.valueOf(String.java:2826) > at java.lang.StringBuffer.append(StringBuffer.java:219) > at > org.apache.commons.lang3.builder.ToStringStyle.appendDetail(ToStringStyle.java:586) > at > org.apache.commons.lang3.builder.ToStringStyle.appendInternal(ToStringStyle.java:550) > at > org.apache.commons.lang3.builder.ToStringStyle.append(ToStringStyle.java:436) > at > org.apache.commons.lang3.builder.ToStringBuilder.append(ToStringBuilder.java:848) > at > org.apache.commons.lang3.builder.ReflectionToStringBuilder.appendFieldsIn(ReflectionToStringBuilder.java:528) > at > org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(ReflectionToStringBuilder.java:689) > at > org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(ReflectionToStringBuilder.java:288) > at > org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(ReflectionToStringBuilder.java:119) > at > com.seagullsw.appinterface.server.comm.BasicCommunicationManager.toString(BasicCommunicationManager.java:828) > at > com.seagullsw.appinterface.server.comm.BasicCommunicationManager.toString(BasicCommunicationManager.java:817) > at java.lang.String.valueOf(String.java:2826) > at java.lang.StringBuilder.append(StringBuilder.java:115) > at > com.seagullsw.appinterface.server.AisHelper.waitForCommuncationManagers(AisHelper.java:217) > at com.seagullsw.appinterface.server.AisHelper.start(AisHelper.java:136) > at > com.seagullsw.appinterface.server.AisHelper.startFromResource(AisHelper.java:161) > at > com.seagullsw.appinterface.server.AbstractServerJunit4.startServer(AbstractServerJunit4.java:179) > at > com.seagullsw.appinterface.server.comm.jms.AbstractJmsRoundtripMaxConcurrencyTestCase.setUpOnce(AbstractJmsRoundtripMaxConcurrencyTestCase.java:141) > at > com.seagullsw.appinterface.server.comm.jms.ibmmq.JmsRoundtripMaxConcurrency032TestCase.setUpOnce(JmsRoundtripMaxConcurrency032TestCase.java:40) > {noformat} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira