[
https://issues.apache.org/jira/browse/DBCP-424?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14083611#comment-14083611
]
Eric Fialkowski commented on DBCP-424:
--------------------------------------
I'm not sure I agree with your first statement.
We are using the max lifetime to periodically refresh the connections to the
database. Our particular use case is when we change which database the app is
using (via host entry change,) we are OK with the connections migrating over 5
minutes.
Since we have explicitly told the pool to do something, I don't see that being
a WARN message. Maybe an INFO message, but there is nothing unexpected about
this message in this case.
Also, if exceeding max lifetime is indicative that there is a bug in user code,
shouldn't the exception be propagated?
> validateLifetime causes needless warnings about swallowed exceptions to be
> logged
> ---------------------------------------------------------------------------------
>
> Key: DBCP-424
> URL: https://issues.apache.org/jira/browse/DBCP-424
> Project: Commons Dbcp
> Issue Type: Improvement
> Affects Versions: 2.0
> Environment: Java 1.7, jTDS 1.2.8, Ubuntu Linux 12.04
> Reporter: Eric Fialkowski
> Priority: Minor
>
> the validateLifetime method in PoolableConnectionFactory is causing the
> following warning to be logged, even though it is not an exceptional case.
> While it is not impairing functionality, we have to work around the issue.
> 2014-07-29 14:15:28.0573 WARN http-8084-52
> org.apache.commons.dbcp2.BasicDataSource An internal object pool swallowed an
> Exception
> java.lang.Exception: The lifetime of the connection [300,008] milliseconds
> exceeds the maximum permitted value of [300,000] milliseconds
> at
> org.apache.commons.dbcp2.PoolableConnectionFactory.validateLifetime(PoolableConnectionFactory.java:370)
> at
> org.apache.commons.dbcp2.PoolableConnectionFactory.passivateObject(PoolableConnectionFactory.java:310)
> at
> org.apache.commons.pool2.impl.GenericObjectPool.returnObject(GenericObjectPool.java:577)
> at
> org.apache.commons.dbcp2.PoolableConnection.close(PoolableConnection.java:171)
> at
> org.apache.commons.dbcp2.DelegatingConnection.closeInternal(DelegatingConnection.java:235)
> at
> org.apache.commons.dbcp2.DelegatingConnection.close(DelegatingConnection.java:218)
> at
> org.apache.commons.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:229)
> at
> org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:341)
> at
> org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:328)
> at
> org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:294)
> at
> org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:417)
> at
> org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:468)
> at
> org.springframework.jdbc.core.JdbcTemplate.queryForRowSet(JdbcTemplate.java:523)
> at com.ca.vm.lib.dao.ModelDao.loadJobDetails(ModelDao.java:999)
> at com.ca.vm.lib.dao.ModelDao.extractJobs(ModelDao.java:910)
> at com.ca.vm.lib.dao.ModelDao.extractJob(ModelDao.java:921)
> at com.ca.vm.lib.dao.ModelDao.loadJob(ModelDao.java:744)
> at
> com.ca.vm.api.jobs.JobsApiLinksLoader$1.load(JobsApiLinksLoader.java:48)
> at
> com.ca.vm.api.json.ApiLinksExpander.makeApiRequest(ApiLinksExpander.java:130)
> at
> com.ca.vm.api.json.ApiLinksExpander.expand(ApiLinksExpander.java:114)
> at
> com.ca.vm.api.json.ApiLinksExpander.rootExpand(ApiLinksExpander.java:65)
> at
> com.ca.vm.api.json.ApiLinksExpander.toJson(ApiLinksExpander.java:60)
> at com.ca.vm.api.JobsResource.getJobById(JobsResource.java:283)
> at sun.reflect.GeneratedMethodAccessor317.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:601)
> at
> com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
> at
> com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
> at
> com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
> at
> com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
> at
> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
> at
> com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
> at
> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
> at
> com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
> at
> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511)
> at
> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442)
> at
> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)
> at
> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)
> at
> com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
> at
> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
> at
> com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:910)
> at
> com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:858)
> at
> com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:812)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> com.ca.graphite.ws.lib.AbstractGraphiteMetricFilter.doFilter(AbstractGraphiteMetricFilter.java:72)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
> at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
> at java.lang.Thread.run(Thread.java:722)
--
This message was sent by Atlassian JIRA
(v6.2#6252)