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

PooledConnectionFactory gets in endless loop when storing into JNDI

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 5.9.0, 5.9.1, 5.10.0
    • Fix Version/s: 5.10.1, 5.11.0
    • Component/s: Pool
    • Labels:
    • Environment:

      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

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

              Dates

              • Created:
                Updated:
                Resolved: