https://issues.apache.org/bugzilla/show_bug.cgi?id=54150
Priority: P2
Bug ID: 54150
Assignee: [email protected]
Summary: SlowQueryReportJmx mbean deregistration failure due to
NPE - properties not set during pool close callback
Severity: normal
Classification: Unclassified
Reporter: [email protected]
Hardware: PC
Status: NEW
Version: unspecified
Component: jdbc-pool
Product: Tomcat Modules
Found while debugging version 7.0.29
I found that our SlowQueryReportJmx mbean was not being deregistered during
webapp shutdown. I tracked this down to a NPE. The interceptor properties are
not being set (as is done in setupConnection) prior to the pool close callback.
ConnectionPool.close(boolean) poolClosed callback produces NPE in
SlowQueryReportJmx.
{code}
PoolProperties.InterceptorDefinition[] proxies =
getPoolProperties().getJdbcInterceptorsAsArray();
for (int i=0; i<proxies.length; i++) {
try {
proxies[i].getInterceptorClass().newInstance().poolClosed(this);
}catch (Exception x) {
log.debug("Unable to inform interceptor of pool closure.",x);
}
}
...
{code}
NPE in SlowQueryReportJmx - null.containsKey
{code}
public ObjectName getObjectName(Class<?> clazz, String poolName) throws
MalformedObjectNameException {
... NPE
if (getProperties().containsKey(objectNameAttribute)) {
...
{code}
Sounds reasonable to set properties any time you need to instantiate
interceptors.
As is done in ConnectionPool.init(PoolConfiguration)
{code}
JdbcInterceptor interceptor =
proxies[i].getInterceptorClass().newInstance();
interceptor.setProperties(proxies[i].getProperties());
interceptor.poolStarted(this);
{code}
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]