You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Bastien Colmard (JIRA)" <ji...@apache.org> on 2015/06/04 14:37:37 UTC

[jira] [Updated] (POOL-298) Wrong jmxNameBase default value

     [ https://issues.apache.org/jira/browse/POOL-298?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bastien Colmard updated POOL-298:
---------------------------------
    Description: 
We needed to define our own pool names for Redis, to be able to know which pool was throwing errors, but we experienced some difficulties.
We use {{jedis-2.7.2}}, which uses {{commons-pool2-2.3}} configured with spring beans. After setting a custom {{jmxNamePrefix}}, we didn't notice any difference and proceeded to debug.

To my understanding, BaseGenericObjectPool.jmxRegister uses BaseObjectPoolConfig.jmxNameBase to build its ObjectName, but jmxNameBase defaults to jmxNamePrefix which is "pool" (not a valid domain) and throws a MalformedObjectNameException, falling back to "org.apache.commons.pool2:type=GenericKeyedObjectPool,name=pool".

The current workaround is to force jmxNameBase to null with 
{code:xml}<property name="jmxNameBase"><null/></property>{code}

The fix would be
https://github.com/apache/commons-pool/blob/trunk/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java#L192 (introduced in December 2013 it seems)
{code}
-private String jmxNameBase = DEFAULT_JMX_NAME_PREFIX
+private String jmxNameBase = DEFAULT_JMX_NAME_BASE
{code}
I can submit a Pull Request on Github but it looks like you only use it as a mirror

  was:
We needed to define our own pool names for Redis, to be able to know which pool was throwing errors, but we experienced some difficulties.
We use {{jedis-2.7.2}}, which uses {{commons-pool2-2.3}} configured with spring beans. After setting a custom {{jmxNamePrefix}}, we didn't notice any difference and proceeded to debug.

BaseGenericObjectPool.jmxRegister uses BaseObjectPoolConfig.jmxNameBase to build its ObjectName, but jmxNameBase defaults to jmxNamePrefix which is "pool" (not a valid domain) and throws a MalformedObjectNameException, falling back to "org.apache.commons.pool2:type=GenericKeyedObjectPool,name=pool".

The current workaround is to force jmxNameBase to null with 
{code:xml}<property name="jmxNameBase"><null/></property>{code}

https://github.com/apache/commons-pool/blob/trunk/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java#L192 (introduced in December 2013 it seems)

The fix would be
{code}
-private String jmxNameBase = DEFAULT_JMX_NAME_PREFIX
+private String jmxNameBase = DEFAULT_JMX_NAME_BASE
{code}
I can submit a Pull Request on Github but it looks like you only use it as a mirror


> Wrong jmxNameBase default value
> -------------------------------
>
>                 Key: POOL-298
>                 URL: https://issues.apache.org/jira/browse/POOL-298
>             Project: Commons Pool
>          Issue Type: Bug
>    Affects Versions: 2.3
>            Reporter: Bastien Colmard
>            Priority: Minor
>
> We needed to define our own pool names for Redis, to be able to know which pool was throwing errors, but we experienced some difficulties.
> We use {{jedis-2.7.2}}, which uses {{commons-pool2-2.3}} configured with spring beans. After setting a custom {{jmxNamePrefix}}, we didn't notice any difference and proceeded to debug.
> To my understanding, BaseGenericObjectPool.jmxRegister uses BaseObjectPoolConfig.jmxNameBase to build its ObjectName, but jmxNameBase defaults to jmxNamePrefix which is "pool" (not a valid domain) and throws a MalformedObjectNameException, falling back to "org.apache.commons.pool2:type=GenericKeyedObjectPool,name=pool".
> The current workaround is to force jmxNameBase to null with 
> {code:xml}<property name="jmxNameBase"><null/></property>{code}
> The fix would be
> https://github.com/apache/commons-pool/blob/trunk/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java#L192 (introduced in December 2013 it seems)
> {code}
> -private String jmxNameBase = DEFAULT_JMX_NAME_PREFIX
> +private String jmxNameBase = DEFAULT_JMX_NAME_BASE
> {code}
> I can submit a Pull Request on Github but it looks like you only use it as a mirror



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)