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
>

Reply via email to