Return-Path: Delivered-To: apmail-geronimo-activemq-users-archive@www.apache.org Received: (qmail 95375 invoked from network); 9 May 2006 14:24:57 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 9 May 2006 14:24:57 -0000 Received: (qmail 19780 invoked by uid 500); 9 May 2006 14:24:40 -0000 Delivered-To: apmail-geronimo-activemq-users-archive@geronimo.apache.org Received: (qmail 19761 invoked by uid 500); 9 May 2006 14:24:40 -0000 Mailing-List: contact activemq-users-help@geronimo.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: activemq-users@geronimo.apache.org Delivered-To: mailing list activemq-users@geronimo.apache.org Received: (qmail 19752 invoked by uid 99); 9 May 2006 14:24:39 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 09 May 2006 07:24:39 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: domain of lists@nabble.com designates 72.21.53.35 as permitted sender) Received: from [72.21.53.35] (HELO talk.nabble.com) (72.21.53.35) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 09 May 2006 07:24:38 -0700 Received: from localhost ([127.0.0.1] helo=talk.nabble.com) by talk.nabble.com with esmtp (Exim 4.50) id 1FdT8L-0005bc-5r for activemq-users@geronimo.apache.org; Tue, 09 May 2006 07:24:17 -0700 Message-ID: <4300897.post@talk.nabble.com> Date: Tue, 9 May 2006 07:24:17 -0700 (PDT) From: luke1 To: activemq-users@geronimo.apache.org Subject: multiple producers and InvalidClientIDException problem, producers wait MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Nabble-Sender: mario@tis.hr X-Nabble-From: luke1 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N When trying to start multiple producers from multiple threads on single queue, using JmsTemplate with PooledConnectionFactory, I get couple of following exceptions, and producer threads get stuck in a wait : [INFO] Service - Sync error occurred: javax.jms.InvalidClientIDException: Broker: localhost - Client: ID:kiss-1890-1147183464931-3:0 already connected javax.jms.InvalidClientIDException: Broker: localhost - Client: ID:kiss-1890-1147183464931-3:0 already connected at org.apache.activemq.broker.region.RegionBroker.addConnection(RegionBroker.java:154) at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:65) at org.apache.activemq.advisory.AdvisoryBroker.addConnection(AdvisoryBroker.java:67) at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:65) at org.apache.activemq.broker.MutableBrokerFilter.addConnection(MutableBrokerFilter.java:77) at org.apache.activemq.broker.AbstractConnection.processAddConnection(AbstractConnection.java:500) at org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:106) at org.apache.activemq.broker.AbstractConnection.service(AbstractConnection.java:196) at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:62) at org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:88) at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:70) at org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:75) at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:44) at org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:63) at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:68) at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1108) at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1196) at org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:252) at org.apache.activemq.pool.SessionPool.createSession(SessionPool.java:116) at org.apache.activemq.pool.SessionPool.makeObject(SessionPool.java:84) at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:771) at org.apache.activemq.pool.SessionPool.borrowSession(SessionPool.java:59) at org.apache.activemq.pool.ConnectionPool.createSession(ConnectionPool.java:67) at org.apache.activemq.pool.PooledConnection.createSession(PooledConnection.java:123) at org.springframework.jms.core.JmsTemplate.createSession(JmsTemplate.java:408) at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:496) at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:545) at ProducerTest$ProducerRunnable.run(ProducerTest.java:83) After that, some of the threads continue sending messages, while others are stuck in a wait: Thread-9@1d2, priority=5, in group 'main', status: 'WAIT' wait():-1, Object.java wait():429, Object.java waitFor():267, FutureTask.java get():117, FutureTask.java getResult():44, FutureResponse.java request():69, ResponseCorrelator.java syncSendPacket():1108, ActiveMQConnection.java ensureConnectionInfoSent():1196, ActiveMQConnection.java createSession():252, ActiveMQConnection.java createSession():116, SessionPool.java makeObject():84, SessionPool.java borrowObject():771, GenericObjectPool.java borrowSession():59, SessionPool.java createSession():67, ConnectionPool.java createSession():123, PooledConnection.java createSession():408, JmsTemplate.java execute():496, JmsTemplate.java send():545, JmsTemplate.java Test code: import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; import org.apache.activemq.pool.PooledConnectionFactory; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.broker.BrokerService; import org.apache.activemq.command.ActiveMQQueue; import junit.framework.TestCase; import javax.jms.Destination; import javax.jms.Session; import javax.jms.JMSException; import javax.jms.ObjectMessage; public class ProducerTest extends TestCase { public void testMultipleProducers() throws Exception { BrokerService broker = new BrokerService(); broker.setUseLoggingForShutdownErrors(true); broker.setUseShutdownHook(true); broker.setBrokerName("localhost"); broker.setPersistent(false); broker.setUseJmx(false); broker.setTransportConnectorURIs(new String[] {"vm://localhost"}); broker.start(); ActiveMQConnectionFactory jmsFactory = new ActiveMQConnectionFactory(); jmsFactory.setBrokerURL("vm://localhost"); PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory(jmsFactory); JmsTemplate sendTemplate = new JmsTemplate(); sendTemplate.setPubSubDomain(false); sendTemplate.setConnectionFactory(pooledConnectionFactory); Destination testDestination = new ActiveMQQueue("TEST_QUEUE"); int producerCount = 10; ProducerRunnable[] producerRunnables = new ProducerRunnable[producerCount]; for (int i=0; i