Personally, I haven't seen that but it definitely looks like a connection pool leak. I wonder if OpenJPA is holding references.
I have been using the MongoDB persistence for a while without issue, but in the past the organization I worked at replaced OpenJPA with Eclipselink. If I recall correctly, there were substantial performance gains. On Fri, Aug 15, 2014 at 7:39 AM, Chris Geer <[email protected]> wrote: > I'm been seeing the below errors every few days on our Rave server and it's > got me really concerned. It looks like Rave is releasing DB connections > properly. Our usage is really really low but we still have this issue. Is > there a JPA setting that could be wrong? Or a Tomcat DB connection setting. > Here is our Tomcat settings for the datasource. > > <Resource name="jdbc/ravePortalDB" auth="Container" > type="javax.sql.DataSource maxActive="100" maxIdle="30" > maxWait="10000" factory="org.apache.commons.dbcp.BasicDataSourceFactory" > username="username" password="password" > driverClassName="com.mysql.jdbc.Driver" > url="jdbc:mysql://server:3306/rave?allowMultiQueries=true"/> > > Aug 15, 2014 2:29:54 PM org.apache.catalina.core.StandardWrapperValve > invoke > SEVERE: Servlet.service() for servlet default threw exception > <openjpa-2.2.1-r422266:1396819 nonfatal general error> > org.apache.openjpa.persistence.PersistenceException: Cannot get a > connection, pool error Timeout waiting for idle object > FailedObject: select u from JpaUser u where u.username = :username > [java.lang.String] > at org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4958) > at > > org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4918) > at > org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:136) > at > org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:110) > at > org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:62) > at > > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connect(JDBCStoreManager.java:971) > at > > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.getConnection(JDBCStoreManager.java:240) > at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:413) > at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:391) > at > > org.apache.openjpa.jdbc.sql.LogicalUnion$UnionSelect.execute(LogicalUnion.java:427) > at org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:230) > at org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:220) > at > > org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.open(SelectResultObjectProvider.java:94) > at > org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:34) > at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1251) > at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1007) > at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:863) > at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:794) > at > org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:542) > at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:286) > at > org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:302) > at sun.reflect.GeneratedMethodAccessor80.invoke(Unknown Source) > at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:622) > at > > org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:310) > at com.sun.proxy.$Proxy87.getResultList(Unknown Source) > at > > org.apache.rave.portal.repository.impl.JpaUserRepository.getByUsername(JpaUserRepository.java:53) > at > > org.apache.rave.portal.service.impl.DefaultUserService.getUserByUsername(DefaultUserService.java:198) > at sun.reflect.GeneratedMethodAccessor102.invoke(Unknown Source) > at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:622) > at > > org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) > at > > org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198) > at com.sun.proxy.$Proxy29.getUserByUsername(Unknown Source) > at > > org.apache.rave.portal.security.filter.SSORequestHeaderAuthenticationFilter.isNewUser(SSORequestHeaderAuthenticationFilter.java:96) > at > > org.apache.rave.portal.security.filter.SSORequestHeaderAuthenticationFilter.getPreAuthenticatedPrincipal(SSORequestHeaderAuthenticationFilter.java:74) > at > > org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter.doAuthenticate(AbstractPreAuthenticatedProcessingFilter.java:103) > at > > org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter.doFilter(AbstractPreAuthenticatedProcessingFilter.java:91) > at > > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) > at > > org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) > at > > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) > at > > org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) > at > > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) > at > > org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) > at > > org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) > at > > org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) > at > > org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) > 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:103) > 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:861) > at > > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606) > at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) > at java.lang.Thread.run(Thread.java:701) > Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot get a > connection, pool error Timeout waiting for idle object > at > > org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:114) > at > > org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) > at > > org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:110) > at > > org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:87) > at > > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connectInternal(JDBCStoreManager.java:982) > at > > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connect(JDBCStoreManager.java:967) > ... 53 more > Caused by: java.util.NoSuchElementException: Timeout waiting for idle > object > at > > org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1167) > at > > org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106) > ... 58 more >
