[
https://issues.apache.org/jira/browse/AMQ-5268?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Timothy Bish resolved AMQ-5268.
-------------------------------
Resolution: Fixed
Fix Version/s: 5.11.0
Assignee: Timothy Bish
Fixed on trunk.
> PooledConnectionFactory gets in endless loop when storing into JNDI
> -------------------------------------------------------------------
>
> Key: AMQ-5268
> URL: https://issues.apache.org/jira/browse/AMQ-5268
> Project: ActiveMQ
> Issue Type: Bug
> Components: activemq-pool
> Affects Versions: 5.9.0, 5.9.1, 5.10.0
> Environment: JDK-1.6.0_38, tomcat-naming (JNDI)
> Reporter: Michal Kubricht
> Assignee: Timothy Bish
> Labels: jndi, pool
> Fix For: 5.11.0
>
> Attachments: AmqJndiReference.java
>
>
> 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.
--
This message was sent by Atlassian JIRA
(v6.2#6252)