Cannont get a connectoin error

56 views
Skip to first unread message

Jose Blanco

unread,
Mar 31, 2016, 10:25:00 AM3/31/16
to DSpace Technical Support
I"m on dspace 5.1 and I've noticed this error in the log file

2016-03-30 10:42:06,450 ERROR org.dspace.storage.rdbms.DatabaseManager @ SQL connection Error -

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.dspace.storage.rdbms.DatabaseManager.getConnection(DatabaseManager.java:637)

        at org.dspace.core.Context.init(Context.java:124)

        at org.dspace.core.Context.<init>(Context.java:98)

I searched and found this:


I wonder if I should try to apply the patch shown here or is there a better way to deal with this.

Thank you!
Jose

Javier Távara

unread,
Aug 21, 2016, 2:01:43 PM8/21/16
to DSpace Technical Support
Hi. I'm using DSpace 5.5 and I'm seeing the same problem. I thought PostgreSQL was the problem but I restarted Tomcat and it works fine now. It's the second time after two weeks.
Any ideas?

2016-08-21 08:37:11,318 ERROR org.dspace.storage.rdbms.DatabaseManager @ SQL connection Error -
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
.dspace.storage.rdbms.DatabaseManager.getConnection(DatabaseManager.java:634)
 at org
.dspace.core.Context.init(Context.java:121)
 at org
.dspace.core.Context.<init>(Context.java:95)
 at org
.dspace.app.xmlui.utils.ContextUtil.obtainContext(ContextUtil.java:89)
 at org
.dspace.app.xmlui.utils.ContextUtil.obtainContext(ContextUtil.java:54)
 at org
.dspace.app.xmlui.utils.HandleUtil.obtainHandle(HandleUtil.java:86)
 at org
.dspace.app.xmlui.cocoon.ThemeMatcher.match(ThemeMatcher.java:57)
 at org
.apache.cocoon.sitemap.impl.DefaultExecutor.invokeMatcher(DefaultExecutor.java:68)
 at org
.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:71)
 at org
.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
 at org
.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
 at org
.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
 at org
.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:81)
 at org
.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:239)
 at org
.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:171)
 at org
.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:247)
 at org
.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:117)
 at org
.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
 at org
.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
 at org
.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
 at org
.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:81)
 at org
.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:239)
 at org
.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:171)
 at org
.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:247)
 at org
.apache.cocoon.servlet.RequestProcessor.process(RequestProcessor.java:351)
 at org
.apache.cocoon.servlet.RequestProcessor.service(RequestProcessor.java:169)
 at org
.apache.cocoon.sitemap.SitemapServlet.service(SitemapServlet.java:84)
 at javax
.servlet.http.HttpServlet.service(HttpServlet.java:729)
 at org
.apache.cocoon.servletservice.ServletServiceContext$PathDispatcher.forward(ServletServiceContext.java:468)
 at org
.apache.cocoon.servletservice.ServletServiceContext$PathDispatcher.forward(ServletServiceContext.java:443)
 at org
.apache.cocoon.servletservice.spring.ServletFactoryBean$ServiceInterceptor.invoke(ServletFactoryBean.java:264)
 at org
.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
 at org
.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
 at com
.sun.proxy.$Proxy83.service(Unknown Source)
 at org
.dspace.springmvc.CocoonView.render(CocoonView.java:113)
 at org
.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
 at org
.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
 at org
.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
 at org
.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
 at org
.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
 at javax
.servlet.http.HttpServlet.service(HttpServlet.java:622)
 at javax
.servlet.http.HttpServlet.service(HttpServlet.java:729)
 at org
.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
 at org
.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
 at org
.dspace.app.xmlui.cocoon.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111)
 at org
.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
 at org
.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
 at org
.dspace.app.xmlui.cocoon.DSpaceCocoonServletFilter.doFilter(DSpaceCocoonServletFilter.java:274)
 at org
.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
 at org
.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
 at org
.dspace.app.xmlui.cocoon.servlet.multipart.DSpaceMultipartFilter.doFilter(DSpaceMultipartFilter.java:119)
 at org
.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
 at org
.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
 at org
.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
 at org
.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
 at org
.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
 at org
.dspace.rdf.negotiation.NegotiationFilter.doFilter(NegotiationFilter.java:50)
 at org
.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
 at org
.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
 at org
.dspace.utils.servlet.DSpaceWebappServletFilter.doFilter(DSpaceWebappServletFilter.java:78)
 at org
.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
 at org
.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
 at org
.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
 at org
.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
 at org
.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522)
 at org
.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
 at org
.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
 at org
.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
 at org
.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
 at org
.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
 at org
.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:780)
 at org
.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
 at org
.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785)
 at org
.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425)
 at org
.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
 at java
.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
 at java
.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
 at org
.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 at java
.lang.Thread.run(Thread.java:745)
Caused by: java.util.NoSuchElementException: Timeout waiting for idle object
 at org
.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:958)
 at org
.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106)
 
... 79 more

Ariel Lira

unread,
Aug 23, 2016, 12:03:58 PM8/23/16
to DSpace Technical Support
Hi Jose, we had those exceptions too on 5.x and previous versions. I think it is caused by idle connections. Try limiting idle connections and increasing  maxconnections. 
For example:

# Maximum number of DB connections in pool
db.maxconnections = 50

# Maximum time to wait before giving up if all connections in pool are busy (milliseconds)
db.maxwait = 3000

# Maximum number of idle connections in pool (-1 = unlimited)
db.maxidle = 30

In dspace 6(rc2) this issue seems fixed. Perhaps because Hibernate is closing all connections as expected.  
Regards,
Ariel

Javier Távara

unread,
Aug 23, 2016, 12:08:23 PM8/23/16
to Ariel Lira, DSpace Technical Support
Thanks Ariel.
May I know for how many visitors are you trying this configuration?

--
You received this message because you are subscribed to a topic in the Google Groups "DSpace Technical Support" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dspace-tech/A5IFDmJ74Yk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dspace-tech...@googlegroups.com.
To post to this group, send email to dspac...@googlegroups.com.
Visit this group at https://groups.google.com/group/dspace-tech.
For more options, visit https://groups.google.com/d/optout.

Ariel Lira

unread,
Aug 23, 2016, 12:31:32 PM8/23/16
to Javier Távara, DSpace Technical Support
Hi Javier,

That config (max=50, idle=30) was used in a dspace 5.x with less than 100k requests/day. Now we use  max=30 and idle=-1 in dspace 6.0-rc2.

In another server with an old DSpace and average 400k requests/day, we have
> db.maxconnections = 150
> db.maxidle = 50

Regards


To unsubscribe from this group and all its topics, send an email to dspace-tech+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages