activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Timothy Bish (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (AMQ-5268) PooledConnectionFactory gets in endless loop when storing into JNDI
Date Thu, 10 Jul 2014 14:12:04 GMT

    [ https://issues.apache.org/jira/browse/AMQ-5268?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14057500#comment-14057500
] 

Timothy Bish commented on AMQ-5268:
-----------------------------------

Can you create a JUnit test that shows the problem, and create a patch that resolves it?

> 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
>              Labels: jndi, pool
>         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)

Mime
View raw message