Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-5268

PooledConnectionFactory gets in endless loop when storing into JNDI

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 5.9.0, 5.9.1, 5.10.0
    • 5.10.1, 5.11.0
    • Pool
    • JDK-1.6.0_38, tomcat-naming (JNDI)

    Description

      We got into troubles when upgrading from 5.7.0 to new version 5.10.0. One of our tests which uses binding of PooledConnectionFactory into JNDI (tomcat-naming) got stuck and computes in endless loop.

      Problem is implementation of interface org.apache.activemq.jndi.JNDIStorableInterface in class org.apache.activemq.pool.PooledConnectionFactory:

      • method populateProperties(Properties props) implementation uses IntrospectionSupport.getProperties(...) in order to set properties for all getters,
      • setting properties works for basic types, but causes stack overflow for getters - getReference() and getProperties() which creates recursion loops
      • loop #1: PooledConnectionFactory.getProperties -> PooledConnectionFactory.populateProperties -> IntrospectionSupport.getProperties -> PooledConnectionFactory.getProperties
      • loop #2: PooledConnectionFactory.getProperties -> PooledConnectionFactory.populateProperties -> IntrospectionSupport.getProperties -> PooledConnectionFactory.getReference -> JNDIReferenceFactory.createReference -> PooledConnectionFactory.getProperties
      • additional info: recursion loop doesn't end with StackOverflowError, but InvocationTargetException is propagated to IntrospectionSupport.getProperties method where it is being ignored and causes "almost endless" computation (exponential complexity)

      Example test without using JNDI, but using key methods showing the problem and its possible solution/workaround for AMQ 5.10.0 is attached.

      We found that error exists for AMQ 5.9.0 and newer after resolving following issue AMQ-4757.

      Attachments

        1. AmqJndiReference.java
          2 kB
          Michal Kubricht

        Activity

          People

            tabish Timothy A. Bish
            mkubricht Michal Kubricht
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: