[ https://issues.apache.org/activemq/browse/AMQ-749?page=all ] Hiram Chirino resolved AMQ-749: -------------------------------
Resolution: Fixed Assign To: Hiram Chirino Added synchronization to make thread safe. > ConnectionDotFileInterceptor not thread safe. > --------------------------------------------- > > Key: AMQ-749 > URL: https://issues.apache.org/activemq/browse/AMQ-749 > Project: ActiveMQ > Type: Bug > Versions: 4.0 > Environment: Windows > Reporter: Ning Li > Assignee: Hiram Chirino > Priority: Critical > Fix For: 4.1, 4.0.1 > > > Unable to run multithreaded MQ application, even for the simplest case. > This is the peudo code, modified the ProducerTool.java > For ( thread 1 to 30 ) > { > Connection connection = createConnection(); > Session session = createSession(connection); > Producer producer = createProducer(session); > sendMessages(producer, 20); //send 20 messages to broker using all > default settings > } > these are the exceptions from broker: > Caught: javax.jms.JMSException: java.util.ConcurrentModificationException > [cp://localhost/127.0.0.1:61616] ActiveMQConnection WARN Async > exception with no exception listener: > java.util.ConcurrentModificationException > java.util.ConcurrentModificationException > at java.util.HashMap$HashIterator.nextEntry(HashMap.java:787) > at java.util.HashMap$EntryIterator.next(HashMap.java:829) > at java.util.HashMap$EntryIterator.next(HashMap.java:827) > at > org.apache.activemq.broker.view.ConnectionDotFileInterceptor.printProducers(ConnectionDotFileInterceptor.java:157) > at > org.apache.activemq.broker.view.ConnectionDotFileInterceptor.generateFile(ConnectionDotFileInterceptor.java:140) > at > org.apache.activemq.broker.view.DotFileInterceptorSupport.generateFile(DotFileInterceptorSupport.java:47) > at > org.apache.activemq.broker.view.ConnectionDotFileInterceptor.addProducer(ConnectionDotFileInterceptor.java:85) > at > org.apache.activemq.broker.MutableBrokerFilter.addProducer(MutableBrokerFilter.java:90) > at > org.apache.activemq.broker.AbstractConnection.processAddProducer(AbstractConnection.java:397) > at org.apache.activemq.command.ProducerInfo.visit(ProducerInfo.java:100) > at > org.apache.activemq.broker.AbstractConnection.service(AbstractConnection.java:201) > at > org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:62) > at > org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:97) > at > org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:63) > at > org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:114) > at > org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:122) > at > org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:87) > at > org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:143) > at java.lang.Thread.run(Thread.java:595) > and exception in the client side: > javax.jms.JMSException: java.util.ConcurrentModificationException > at > org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:45) > at > org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1137) > at org.apache.activemq.AdvisoryConsumer.<init>(AdvisoryConsumer.java:45) > at > org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1227) > at > org.apache.activemq.ActiveMQConnection.start(ActiveMQConnection.java:435) > at > com.businessobjects.framework.services.mq.ToolSupport.createConnection(ToolSupport.java:51) > at > com.businessobjects.framework.services.mq.ProducerTool.run(ProducerTool.java:106) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/activemq/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira