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.

        1. threaddump.txt
          82 kB
          Hisao Furuichi
        2. threaddump2.txt
          88 kB
          Hisao Furuichi

              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: