Uploaded image for project: 'JBoss A-MQ'
  1. JBoss A-MQ
  2. ENTMQ-2138

JMSConsumer could not get a session from initial connection provided by org.apache.activemq.jms.pool.PooledConnectionFactory

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • None
    • JBoss A-MQ 6.3
    • jms-client
    • None
    • User Experience
    • Workaround Exists
    • Hide

      solution 1:
      Remove the option, init-method="start", from org.apache.activemq.jms.pool.PooledConnectionFactory's setting in blueprint.xml

      solution 2:
      Use cold deployment instead of hot deployment.

      Show
      solution 1: Remove the option, init-method =" start ", from org.apache.activemq.jms.pool.PooledConnectionFactory 's setting in blueprint.xml solution 2: Use cold deployment instead of hot deployment.

      This issue occurs during deployment of multiple camel route bundles which uses JMSConsumer. Although appropriate vales are set into maxConnections and maximumActiveSessionPerConnection in JMSConfiguration, JMSConsumer thread could not get a session and wait it forever with following stack trace:

      Camel (casexxxx_02_context1) thread #3 - JmsConsumer[QUEUE1]" #158 daemon prio=5 os_prio=0 tid=0x00007f0b14340800 nid=0x16f9 in Object.wait() [0x00007f0b5c980000]
          java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:502)
        at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1151)
        - locked <0x00000000cd9cac60> (a org.apache.commons.pool.impl.GenericKeyedObjectPool$Latch)
        at org.apache.activemq.jms.pool.ConnectionPool.createSession(ConnectionPool.java:141)
        at org.apache.activemq.jms.pool.PooledConnection.createSession(PooledConnection.java:167)
        at org.springframework.jms.support.JmsAccessor.createSession(JmsAccessor.java:196)
        at org.springframework.jms.listener.DefaultMessageListenerContainer.access$1400(DefaultMessageListenerContainer.java:121)
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.initResourcesIfNecessary(DefaultMessageListenerContainer.java:1123)
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1102)
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1095)
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:992)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:748)
      

      It seems like JMSConsumer could not get a session only from initial connection provided by org.apache.activemq.jms.pool.PooledConnectionFactory.

            gtully@redhat.com Gary Tully
            rhn-support-hfuruich Hisao Furuichi
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: