You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ofbiz.apache.org by Vyom Jain <vy...@gmail.com> on 2016/02/26 07:48:34 UTC

OFBiz trunk + Apache DBCP2 + MySQL connectivity issues

Hello Everyone,

I've been observing frequent errors such as
"org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
connection with the database. (Unable to acquire a new connection from the
pool)". While OFBiz restart helps for sometime, but we would like to avoid
frequent restarts.

I'm wondering if someone else has faced same issues or would like to share
their thoughts. Could it be that upgrade to DBCP2 has introduced new bugs?

I'm using OFBiz trunk (revision 1704086) + MySQL v5.6 + MySQL JDBC driver
v5.1.38 + JDK 7. This version uses Apache DBCP2.

entityengine.xml configuration -
- pool-minsize = "2"
- pool-maxsize = "250"
- time-between-eviction-runs-millis="600000" [used to give same errors with
-1]

Below is the stacktrace of associated with one of these errors -

org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
connection with the database. (Unable to acquire a new connection from the
pool). Rolling back transaction.
org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
connection with the database. (Unable to acquire a new connection from the
pool)
    at
org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:263)
~[ofbiz-entity.jar:?]
    at
org.ofbiz.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:366)
~[ofbiz-entity.jar:?]
    at
org.ofbiz.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:350)
~[ofbiz-entity.jar:?]
    at org.ofbiz.entity.datasource.GenericDAO.select(GenericDAO.java:521)
~[ofbiz-entity.jar:?]
    at org.ofbiz.entity.datasource.GenericDAO.select(GenericDAO.java:492)
~[ofbiz-entity.jar:?]
    at
org.ofbiz.entity.datasource.GenericHelperDAO.findByPrimaryKey(GenericHelperDAO.java:80)
~[ofbiz-entity.jar:?]
    at
org.ofbiz.entity.GenericDelegator.findOne(GenericDelegator.java:1580)
[ofbiz-entity.jar:?]
    at com.mycompany.CustomEvents.addToCart(CustomEvents.java:544)
[ofbiz-mycompanyerp.jar:?]
    at sun.reflect.GeneratedMethodAccessor202.invoke(Unknown Source) ~[?:?]
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
~[?:1.7.0_79]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79]
    at
org.ofbiz.webapp.event.JavaEventHandler.invoke(JavaEventHandler.java:92)
[ofbiz-webapp.jar:?]
    at
org.ofbiz.webapp.event.JavaEventHandler.invoke(JavaEventHandler.java:78)
[ofbiz-webapp.jar:?]
    at
org.ofbiz.webapp.control.RequestHandler.runEvent(RequestHandler.java:759)
[ofbiz-webapp.jar:?]
    at
org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:476)
[ofbiz-webapp.jar:?]
    at
org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:213)
[ofbiz-webapp.jar:?]
    at
org.ofbiz.webapp.control.ControlServlet.doPost(ControlServlet.java:88)
[ofbiz-webapp.jar:?]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
[servlet-api-3.0.jar:?]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
[servlet-api-3.0.jar:?]
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
[tomcat-7.0.64-catalina.jar:7.0.64]
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
[tomcat-7.0.64-catalina.jar:7.0.64]
    at
org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:324)
[ofbiz-webapp.jar:?]
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
[tomcat-7.0.64-catalina.jar:7.0.64]
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
[tomcat-7.0.64-catalina.jar:7.0.64]
    at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
[tomcat-7.0.64-catalina.jar:7.0.64]
    at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
[tomcat-7.0.64-catalina.jar:7.0.64]
    at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
[tomcat-7.0.64-catalina.jar:7.0.64]
    at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
[tomcat-7.0.64-catalina.jar:7.0.64]
    at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
[tomcat-7.0.64-catalina.jar:7.0.64]
    at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
[tomcat-7.0.64-catalina.jar:7.0.64]
    at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
[tomcat-7.0.64-catalina.jar:7.0.64]
    at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
[tomcat-7.0.64-catalina.jar:7.0.64]
    at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:190)
[tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
    at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
[tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
    at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
[tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
    at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[?:1.7.0_79]
    at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[?:1.7.0_79]
    at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
[tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
    at java.lang.Thread.run(Thread.java:745) [?:1.7.0_79]
Caused by: java.sql.SQLException: Unable to acquire a new connection from
the pool
    at
org.apache.commons.dbcp2.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:130)
~[commons-dbcp2-2.1.jar:2.1]
    at
org.apache.commons.dbcp2.managed.ManagedConnection.<init>(ManagedConnection.java:60)
~[commons-dbcp2-2.1.jar:2.1]
    at
org.apache.commons.dbcp2.managed.ManagedDataSource.getConnection(ManagedDataSource.java:82)
~[commons-dbcp2-2.1.jar:2.1]
    at
org.ofbiz.entity.connection.DebugManagedDataSource.getConnection(DebugManagedDataSource.java:52)
~[ofbiz-entity.jar:?]
    at
org.ofbiz.entity.connection.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:63)
~[ofbiz-entity.jar:?]
    at
org.ofbiz.geronimo.GeronimoTransactionFactory.getConnection(GeronimoTransactionFactory.java:83)
~[ofbiz-geronimo.jar:?]
    at
org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:260)
~[ofbiz-entity.jar:?]
    ... 38 more
Caused by: java.util.NoSuchElementException: Timeout waiting for idle object
    at
org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:449)
~[commons-pool2-2.3.jar:2.3]
    at
org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
~[commons-pool2-2.3.jar:2.3]
    at
org.apache.commons.dbcp2.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:127)
~[commons-dbcp2-2.1.jar:2.1]
    at
org.apache.commons.dbcp2.managed.ManagedConnection.<init>(ManagedConnection.java:60)
~[commons-dbcp2-2.1.jar:2.1]
    at
org.apache.commons.dbcp2.managed.ManagedDataSource.getConnection(ManagedDataSource.java:82)
~[commons-dbcp2-2.1.jar:2.1]
    at
org.ofbiz.entity.connection.DebugManagedDataSource.getConnection(DebugManagedDataSource.java:52)
~[ofbiz-entity.jar:?]
    at
org.ofbiz.entity.connection.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:63)
~[ofbiz-entity.jar:?]
    at
org.ofbiz.geronimo.GeronimoTransactionFactory.getConnection(GeronimoTransactionFactory.java:83)
~[ofbiz-geronimo.jar:?]
    at
org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:260)
~[ofbiz-entity.jar:?]
    ... 38 more

--
Vyom

Re: OFBiz trunk + Apache DBCP2 + MySQL connectivity issues

Posted by Jacques Le Roux <ja...@les7arts.com>.
Before doing so we could check if there are any changes in PoolableManagedConnectionFactory else it's unlikely that the issue Scott fixed is fixed in 
2.1.1 (we use 2.1)

We could also work with commons to see if Scott's fix can/should be incorporated... (beware working with the commons team can be rough)

  Jacques


Le 09/03/2016 09:27, Pierre Smits a écrit :
> Maybe upgrading the jar to  commons-dbcp2-2.1.1.jar will address the issue.
>
> Best regards,
>
> Pierre Smits
>
> ORRTIZ.COM <http://www.orrtiz.com>
> OFBiz based solutions & services
>
> OFBiz Extensions Marketplace
> http://oem.ofbizci.net/oci-2/
>
> On Wed, Mar 9, 2016 at 12:45 AM, Scott Gray <sc...@hotwaxsystems.com>
> wrote:
>
>> I'm pretty sure it's a bug in DBCP2 but the issue was complicated and I
>> didn't have time to do any more than fix it at the time.  Maybe it doesn't
>> affect all dbs though because I'm surprised no one else has raised the
>> issue.  I can't say what affect it might have on other database servers.
>>
>> On 9 March 2016 at 03:35, Jacques Le Roux <ja...@les7arts.com>
>> wrote:
>>
>>> Hi Scott,
>>>
>>> I think it's a good question from Vyom. Is that only specific to MySQL? A
>>> specific MySQL version?
>>>
>>> Thanks
>>>
>>> Jacques
>>>
>>>
>>> Le 29/02/2016 13:31, Vyom Jain a écrit :
>>>
>>>> Thanks, shouldn't this be committed in SVN then?
>>>>
>>>> --
>>>> Vyom
>>>>
>>>> On 29 February 2016 at 14:51, Scott Gray <sc...@hotwaxsystems.com>
>>>> wrote:
>>>>
>>>> Actually yes, I have encountered this.  I fixed it with the following
>>>>> class, which you would then use in the DBCPConnectionFactory class in
>>>>> place
>>>>> of the PoolableManagedConnectionFactory.
>>>>>
>>>>> /**
>>>>>
>>>>>    * An extension to the DBCP2 PoolableManagedConnectionFactory that
>>>>> ensures
>>>>> that
>>>>>
>>>>>    * PoolableConnections are always set to setCacheState(false).  This
>> is
>>>>> needed
>>>>>
>>>>>    * because otherwise PoolableConnections will cache the autoCommit
>>>>> setting
>>>>> of the
>>>>>
>>>>>    * underlying connection even though the flag on the underlying
>>>>> connection
>>>>> is often set
>>>>>
>>>>>    * directly (specifically by LocalXAConnectionFactory.LocalXAResource,
>>>>> see
>>>>> start()
>>>>>
>>>>>    * and commit()).
>>>>>
>>>>>    */
>>>>>
>>>>> public class DBCPPoolableManagedConnectionFactory extends
>>>>> PoolableManagedConnectionFactory {
>>>>>
>>>>>
>>>>>       @Override
>>>>>
>>>>>       public synchronized PooledObject<PoolableConnection> makeObject()
>>>>> throws
>>>>> Exception {
>>>>>
>>>>>           PooledObject<PoolableConnection> pooledObject =
>>>>> super.makeObject();
>>>>>
>>>>>           pooledObject.getObject().setCacheState(false);
>>>>>
>>>>>           return pooledObject;
>>>>>
>>>>>       }
>>>>>
>>>>>
>>>>>       public DBCPPoolableManagedConnectionFactory(XAConnectionFactory
>>>>> connFactory, ObjectName dataSourceJmxName) {
>>>>>
>>>>>           super(connFactory, dataSourceJmxName);
>>>>>
>>>>>       }
>>>>>
>>>>>
>>>>> }
>>>>>
>>>>> Regards
>>>>> Scott
>>>>>
>>>>> On 26 February 2016 at 19:48, Vyom Jain <vy...@gmail.com> wrote:
>>>>>
>>>>> Hello Everyone,
>>>>>> I've been observing frequent errors such as
>>>>>> "org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
>>>>>> connection with the database. (Unable to acquire a new connection from
>>>>>>
>>>>> the
>>>>>
>>>>>> pool)". While OFBiz restart helps for sometime, but we would like to
>>>>>>
>>>>> avoid
>>>>>
>>>>>> frequent restarts.
>>>>>>
>>>>>> I'm wondering if someone else has faced same issues or would like to
>>>>>>
>>>>> share
>>>>>
>>>>>> their thoughts. Could it be that upgrade to DBCP2 has introduced new
>>>>>>
>>>>> bugs?
>>>>>
>>>>>> I'm using OFBiz trunk (revision 1704086) + MySQL v5.6 + MySQL JDBC
>>>>>> driver
>>>>>> v5.1.38 + JDK 7. This version uses Apache DBCP2.
>>>>>>
>>>>>> entityengine.xml configuration -
>>>>>> - pool-minsize = "2"
>>>>>> - pool-maxsize = "250"
>>>>>> - time-between-eviction-runs-millis="600000" [used to give same errors
>>>>>>
>>>>> with
>>>>>
>>>>>> -1]
>>>>>>
>>>>>> Below is the stacktrace of associated with one of these errors -
>>>>>>
>>>>>> org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
>>>>>> connection with the database. (Unable to acquire a new connection from
>>>>>>
>>>>> the
>>>>>
>>>>>> pool). Rolling back transaction.
>>>>>> org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
>>>>>> connection with the database. (Unable to acquire a new connection from
>>>>>>
>>>>> the
>>>>>
>>>>>> pool)
>>>>>>       at
>>>>>>
>> org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:263)
>>>>>> ~[ofbiz-entity.jar:?]
>>>>>>       at
>>>>>>
>>>>>>
>> org.ofbiz.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:366)
>>>>>> ~[ofbiz-entity.jar:?]
>>>>>>       at
>>>>>>
>>>>>>
>> org.ofbiz.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:350)
>>>>>> ~[ofbiz-entity.jar:?]
>>>>>>       at
>>>>>> org.ofbiz.entity.datasource.GenericDAO.select(GenericDAO.java:521)
>>>>>> ~[ofbiz-entity.jar:?]
>>>>>>       at
>>>>>> org.ofbiz.entity.datasource.GenericDAO.select(GenericDAO.java:492)
>>>>>> ~[ofbiz-entity.jar:?]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.ofbiz.entity.datasource.GenericHelperDAO.findByPrimaryKey(GenericHelperDAO.java:80)
>>>>>> ~[ofbiz-entity.jar:?]
>>>>>>       at
>>>>>> org.ofbiz.entity.GenericDelegator.findOne(GenericDelegator.java:1580)
>>>>>> [ofbiz-entity.jar:?]
>>>>>>       at com.mycompany.CustomEvents.addToCart(CustomEvents.java:544)
>>>>>> [ofbiz-mycompanyerp.jar:?]
>>>>>>       at sun.reflect.GeneratedMethodAccessor202.invoke(Unknown Source)
>>>>>>
>>>>> ~[?:?]
>>>>>
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>>> ~[?:1.7.0_79]
>>>>>>       at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79]
>>>>>>       at
>>>>>>
>> org.ofbiz.webapp.event.JavaEventHandler.invoke(JavaEventHandler.java:92)
>>>>>> [ofbiz-webapp.jar:?]
>>>>>>       at
>>>>>>
>> org.ofbiz.webapp.event.JavaEventHandler.invoke(JavaEventHandler.java:78)
>>>>>> [ofbiz-webapp.jar:?]
>>>>>>       at
>>>>>>
>>>>>>
>> org.ofbiz.webapp.control.RequestHandler.runEvent(RequestHandler.java:759)
>>>>>> [ofbiz-webapp.jar:?]
>>>>>>       at
>>>>>>
>>>>>>
>> org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:476)
>>>>>> [ofbiz-webapp.jar:?]
>>>>>>       at
>>>>>> org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:213)
>>>>>> [ofbiz-webapp.jar:?]
>>>>>>       at
>>>>>> org.ofbiz.webapp.control.ControlServlet.doPost(ControlServlet.java:88)
>>>>>> [ofbiz-webapp.jar:?]
>>>>>>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
>>>>>> [servlet-api-3.0.jar:?]
>>>>>>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>>>>>> [servlet-api-3.0.jar:?]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
>>>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>>>       at
>>>>>>
>> org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:324)
>>>>>> [ofbiz-webapp.jar:?]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
>>>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
>>>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
>>>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
>>>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
>>>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
>>>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>>>       at
>>>>>>
>>>>>>
>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
>>>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>>>       at
>>>>>>
>>>>>>
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
>>>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>>>       at
>>>>>> org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:190)
>>>>>> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
>>>>>> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>> org.apache.tomcat.util.net
>>>>> .JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
>>>>>
>>>>>> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>>>> [?:1.7.0_79]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>>>> [?:1.7.0_79]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>>>>>> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
>>>>>>       at java.lang.Thread.run(Thread.java:745) [?:1.7.0_79]
>>>>>> Caused by: java.sql.SQLException: Unable to acquire a new connection
>>>>>> from
>>>>>> the pool
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.commons.dbcp2.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:130)
>>>>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.commons.dbcp2.managed.ManagedConnection.<init>(ManagedConnection.java:60)
>>>>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.commons.dbcp2.managed.ManagedDataSource.getConnection(ManagedDataSource.java:82)
>>>>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.ofbiz.entity.connection.DebugManagedDataSource.getConnection(DebugManagedDataSource.java:52)
>>>>>> ~[ofbiz-entity.jar:?]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.ofbiz.entity.connection.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:63)
>>>>>> ~[ofbiz-entity.jar:?]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.ofbiz.geronimo.GeronimoTransactionFactory.getConnection(GeronimoTransactionFactory.java:83)
>>>>>> ~[ofbiz-geronimo.jar:?]
>>>>>>       at
>>>>>>
>> org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:260)
>>>>>> ~[ofbiz-entity.jar:?]
>>>>>>       ... 38 more
>>>>>> Caused by: java.util.NoSuchElementException: Timeout waiting for idle
>>>>>> object
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:449)
>>>>>> ~[commons-pool2-2.3.jar:2.3]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
>>>>>> ~[commons-pool2-2.3.jar:2.3]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.commons.dbcp2.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:127)
>>>>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.commons.dbcp2.managed.ManagedConnection.<init>(ManagedConnection.java:60)
>>>>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.apache.commons.dbcp2.managed.ManagedDataSource.getConnection(ManagedDataSource.java:82)
>>>>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.ofbiz.entity.connection.DebugManagedDataSource.getConnection(DebugManagedDataSource.java:52)
>>>>>> ~[ofbiz-entity.jar:?]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.ofbiz.entity.connection.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:63)
>>>>>> ~[ofbiz-entity.jar:?]
>>>>>>       at
>>>>>>
>>>>>>
>>>>>>
>> org.ofbiz.geronimo.GeronimoTransactionFactory.getConnection(GeronimoTransactionFactory.java:83)
>>>>>> ~[ofbiz-geronimo.jar:?]
>>>>>>       at
>>>>>>
>> org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:260)
>>>>>> ~[ofbiz-entity.jar:?]
>>>>>>       ... 38 more
>>>>>>
>>>>>> --
>>>>>> Vyom
>>>>>>
>>>>>>

Re: OFBiz trunk + Apache DBCP2 + MySQL connectivity issues

Posted by Pierre Smits <pi...@gmail.com>.
Maybe upgrading the jar to  commons-dbcp2-2.1.1.jar will address the issue.

Best regards,

Pierre Smits

ORRTIZ.COM <http://www.orrtiz.com>
OFBiz based solutions & services

OFBiz Extensions Marketplace
http://oem.ofbizci.net/oci-2/

On Wed, Mar 9, 2016 at 12:45 AM, Scott Gray <sc...@hotwaxsystems.com>
wrote:

> I'm pretty sure it's a bug in DBCP2 but the issue was complicated and I
> didn't have time to do any more than fix it at the time.  Maybe it doesn't
> affect all dbs though because I'm surprised no one else has raised the
> issue.  I can't say what affect it might have on other database servers.
>
> On 9 March 2016 at 03:35, Jacques Le Roux <ja...@les7arts.com>
> wrote:
>
> > Hi Scott,
> >
> > I think it's a good question from Vyom. Is that only specific to MySQL? A
> > specific MySQL version?
> >
> > Thanks
> >
> > Jacques
> >
> >
> > Le 29/02/2016 13:31, Vyom Jain a écrit :
> >
> >> Thanks, shouldn't this be committed in SVN then?
> >>
> >> --
> >> Vyom
> >>
> >> On 29 February 2016 at 14:51, Scott Gray <sc...@hotwaxsystems.com>
> >> wrote:
> >>
> >> Actually yes, I have encountered this.  I fixed it with the following
> >>> class, which you would then use in the DBCPConnectionFactory class in
> >>> place
> >>> of the PoolableManagedConnectionFactory.
> >>>
> >>> /**
> >>>
> >>>   * An extension to the DBCP2 PoolableManagedConnectionFactory that
> >>> ensures
> >>> that
> >>>
> >>>   * PoolableConnections are always set to setCacheState(false).  This
> is
> >>> needed
> >>>
> >>>   * because otherwise PoolableConnections will cache the autoCommit
> >>> setting
> >>> of the
> >>>
> >>>   * underlying connection even though the flag on the underlying
> >>> connection
> >>> is often set
> >>>
> >>>   * directly (specifically by LocalXAConnectionFactory.LocalXAResource,
> >>> see
> >>> start()
> >>>
> >>>   * and commit()).
> >>>
> >>>   */
> >>>
> >>> public class DBCPPoolableManagedConnectionFactory extends
> >>> PoolableManagedConnectionFactory {
> >>>
> >>>
> >>>      @Override
> >>>
> >>>      public synchronized PooledObject<PoolableConnection> makeObject()
> >>> throws
> >>> Exception {
> >>>
> >>>          PooledObject<PoolableConnection> pooledObject =
> >>> super.makeObject();
> >>>
> >>>          pooledObject.getObject().setCacheState(false);
> >>>
> >>>          return pooledObject;
> >>>
> >>>      }
> >>>
> >>>
> >>>      public DBCPPoolableManagedConnectionFactory(XAConnectionFactory
> >>> connFactory, ObjectName dataSourceJmxName) {
> >>>
> >>>          super(connFactory, dataSourceJmxName);
> >>>
> >>>      }
> >>>
> >>>
> >>> }
> >>>
> >>> Regards
> >>> Scott
> >>>
> >>> On 26 February 2016 at 19:48, Vyom Jain <vy...@gmail.com> wrote:
> >>>
> >>> Hello Everyone,
> >>>>
> >>>> I've been observing frequent errors such as
> >>>> "org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
> >>>> connection with the database. (Unable to acquire a new connection from
> >>>>
> >>> the
> >>>
> >>>> pool)". While OFBiz restart helps for sometime, but we would like to
> >>>>
> >>> avoid
> >>>
> >>>> frequent restarts.
> >>>>
> >>>> I'm wondering if someone else has faced same issues or would like to
> >>>>
> >>> share
> >>>
> >>>> their thoughts. Could it be that upgrade to DBCP2 has introduced new
> >>>>
> >>> bugs?
> >>>
> >>>> I'm using OFBiz trunk (revision 1704086) + MySQL v5.6 + MySQL JDBC
> >>>> driver
> >>>> v5.1.38 + JDK 7. This version uses Apache DBCP2.
> >>>>
> >>>> entityengine.xml configuration -
> >>>> - pool-minsize = "2"
> >>>> - pool-maxsize = "250"
> >>>> - time-between-eviction-runs-millis="600000" [used to give same errors
> >>>>
> >>> with
> >>>
> >>>> -1]
> >>>>
> >>>> Below is the stacktrace of associated with one of these errors -
> >>>>
> >>>> org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
> >>>> connection with the database. (Unable to acquire a new connection from
> >>>>
> >>> the
> >>>
> >>>> pool). Rolling back transaction.
> >>>> org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
> >>>> connection with the database. (Unable to acquire a new connection from
> >>>>
> >>> the
> >>>
> >>>> pool)
> >>>>      at
> >>>>
> org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:263)
> >>>> ~[ofbiz-entity.jar:?]
> >>>>      at
> >>>>
> >>>>
> >>>
> org.ofbiz.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:366)
> >>>
> >>>> ~[ofbiz-entity.jar:?]
> >>>>      at
> >>>>
> >>>>
> >>>
> org.ofbiz.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:350)
> >>>
> >>>> ~[ofbiz-entity.jar:?]
> >>>>      at
> >>>> org.ofbiz.entity.datasource.GenericDAO.select(GenericDAO.java:521)
> >>>> ~[ofbiz-entity.jar:?]
> >>>>      at
> >>>> org.ofbiz.entity.datasource.GenericDAO.select(GenericDAO.java:492)
> >>>> ~[ofbiz-entity.jar:?]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.ofbiz.entity.datasource.GenericHelperDAO.findByPrimaryKey(GenericHelperDAO.java:80)
> >>>
> >>>> ~[ofbiz-entity.jar:?]
> >>>>      at
> >>>> org.ofbiz.entity.GenericDelegator.findOne(GenericDelegator.java:1580)
> >>>> [ofbiz-entity.jar:?]
> >>>>      at com.mycompany.CustomEvents.addToCart(CustomEvents.java:544)
> >>>> [ofbiz-mycompanyerp.jar:?]
> >>>>      at sun.reflect.GeneratedMethodAccessor202.invoke(Unknown Source)
> >>>>
> >>> ~[?:?]
> >>>
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >>>
> >>>> ~[?:1.7.0_79]
> >>>>      at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79]
> >>>>      at
> >>>>
> org.ofbiz.webapp.event.JavaEventHandler.invoke(JavaEventHandler.java:92)
> >>>> [ofbiz-webapp.jar:?]
> >>>>      at
> >>>>
> org.ofbiz.webapp.event.JavaEventHandler.invoke(JavaEventHandler.java:78)
> >>>> [ofbiz-webapp.jar:?]
> >>>>      at
> >>>>
> >>>>
> org.ofbiz.webapp.control.RequestHandler.runEvent(RequestHandler.java:759)
> >>>> [ofbiz-webapp.jar:?]
> >>>>      at
> >>>>
> >>>>
> >>>
> org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:476)
> >>>
> >>>> [ofbiz-webapp.jar:?]
> >>>>      at
> >>>> org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:213)
> >>>> [ofbiz-webapp.jar:?]
> >>>>      at
> >>>> org.ofbiz.webapp.control.ControlServlet.doPost(ControlServlet.java:88)
> >>>> [ofbiz-webapp.jar:?]
> >>>>      at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
> >>>> [servlet-api-3.0.jar:?]
> >>>>      at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
> >>>> [servlet-api-3.0.jar:?]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
> >>>
> >>>> [tomcat-7.0.64-catalina.jar:7.0.64]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
> >>>
> >>>> [tomcat-7.0.64-catalina.jar:7.0.64]
> >>>>      at
> >>>>
> org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:324)
> >>>> [ofbiz-webapp.jar:?]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
> >>>
> >>>> [tomcat-7.0.64-catalina.jar:7.0.64]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
> >>>
> >>>> [tomcat-7.0.64-catalina.jar:7.0.64]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
> >>>
> >>>> [tomcat-7.0.64-catalina.jar:7.0.64]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
> >>>
> >>>> [tomcat-7.0.64-catalina.jar:7.0.64]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
> >>>
> >>>> [tomcat-7.0.64-catalina.jar:7.0.64]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
> >>>
> >>>> [tomcat-7.0.64-catalina.jar:7.0.64]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
> >>>
> >>>> [tomcat-7.0.64-catalina.jar:7.0.64]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
> >>>
> >>>> [tomcat-7.0.64-catalina.jar:7.0.64]
> >>>>      at
> >>>>
> >>>>
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
> >>>> [tomcat-7.0.64-catalina.jar:7.0.64]
> >>>>      at
> >>>>
> >>>>
> >>>
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
> >>>
> >>>> [tomcat-7.0.64-catalina.jar:7.0.64]
> >>>>      at
> >>>> org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:190)
> >>>> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
> >>>
> >>>> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
> >>>>      at
> >>>>
> >>>>
> >>>> org.apache.tomcat.util.net
> >>> .JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
> >>>
> >>>> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> >>>
> >>>> [?:1.7.0_79]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> >>>
> >>>> [?:1.7.0_79]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
> >>>
> >>>> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
> >>>>      at java.lang.Thread.run(Thread.java:745) [?:1.7.0_79]
> >>>> Caused by: java.sql.SQLException: Unable to acquire a new connection
> >>>> from
> >>>> the pool
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.commons.dbcp2.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:130)
> >>>
> >>>> ~[commons-dbcp2-2.1.jar:2.1]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.commons.dbcp2.managed.ManagedConnection.<init>(ManagedConnection.java:60)
> >>>
> >>>> ~[commons-dbcp2-2.1.jar:2.1]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.commons.dbcp2.managed.ManagedDataSource.getConnection(ManagedDataSource.java:82)
> >>>
> >>>> ~[commons-dbcp2-2.1.jar:2.1]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.ofbiz.entity.connection.DebugManagedDataSource.getConnection(DebugManagedDataSource.java:52)
> >>>
> >>>> ~[ofbiz-entity.jar:?]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.ofbiz.entity.connection.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:63)
> >>>
> >>>> ~[ofbiz-entity.jar:?]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.ofbiz.geronimo.GeronimoTransactionFactory.getConnection(GeronimoTransactionFactory.java:83)
> >>>
> >>>> ~[ofbiz-geronimo.jar:?]
> >>>>      at
> >>>>
> org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:260)
> >>>> ~[ofbiz-entity.jar:?]
> >>>>      ... 38 more
> >>>> Caused by: java.util.NoSuchElementException: Timeout waiting for idle
> >>>> object
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:449)
> >>>
> >>>> ~[commons-pool2-2.3.jar:2.3]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
> >>>
> >>>> ~[commons-pool2-2.3.jar:2.3]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.commons.dbcp2.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:127)
> >>>
> >>>> ~[commons-dbcp2-2.1.jar:2.1]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.commons.dbcp2.managed.ManagedConnection.<init>(ManagedConnection.java:60)
> >>>
> >>>> ~[commons-dbcp2-2.1.jar:2.1]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.apache.commons.dbcp2.managed.ManagedDataSource.getConnection(ManagedDataSource.java:82)
> >>>
> >>>> ~[commons-dbcp2-2.1.jar:2.1]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.ofbiz.entity.connection.DebugManagedDataSource.getConnection(DebugManagedDataSource.java:52)
> >>>
> >>>> ~[ofbiz-entity.jar:?]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.ofbiz.entity.connection.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:63)
> >>>
> >>>> ~[ofbiz-entity.jar:?]
> >>>>      at
> >>>>
> >>>>
> >>>>
> >>>
> org.ofbiz.geronimo.GeronimoTransactionFactory.getConnection(GeronimoTransactionFactory.java:83)
> >>>
> >>>> ~[ofbiz-geronimo.jar:?]
> >>>>      at
> >>>>
> org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:260)
> >>>> ~[ofbiz-entity.jar:?]
> >>>>      ... 38 more
> >>>>
> >>>> --
> >>>> Vyom
> >>>>
> >>>>
>

Re: OFBiz trunk + Apache DBCP2 + MySQL connectivity issues

Posted by Scott Gray <sc...@hotwaxsystems.com>.
I'm pretty sure it's a bug in DBCP2 but the issue was complicated and I
didn't have time to do any more than fix it at the time.  Maybe it doesn't
affect all dbs though because I'm surprised no one else has raised the
issue.  I can't say what affect it might have on other database servers.

On 9 March 2016 at 03:35, Jacques Le Roux <ja...@les7arts.com>
wrote:

> Hi Scott,
>
> I think it's a good question from Vyom. Is that only specific to MySQL? A
> specific MySQL version?
>
> Thanks
>
> Jacques
>
>
> Le 29/02/2016 13:31, Vyom Jain a écrit :
>
>> Thanks, shouldn't this be committed in SVN then?
>>
>> --
>> Vyom
>>
>> On 29 February 2016 at 14:51, Scott Gray <sc...@hotwaxsystems.com>
>> wrote:
>>
>> Actually yes, I have encountered this.  I fixed it with the following
>>> class, which you would then use in the DBCPConnectionFactory class in
>>> place
>>> of the PoolableManagedConnectionFactory.
>>>
>>> /**
>>>
>>>   * An extension to the DBCP2 PoolableManagedConnectionFactory that
>>> ensures
>>> that
>>>
>>>   * PoolableConnections are always set to setCacheState(false).  This is
>>> needed
>>>
>>>   * because otherwise PoolableConnections will cache the autoCommit
>>> setting
>>> of the
>>>
>>>   * underlying connection even though the flag on the underlying
>>> connection
>>> is often set
>>>
>>>   * directly (specifically by LocalXAConnectionFactory.LocalXAResource,
>>> see
>>> start()
>>>
>>>   * and commit()).
>>>
>>>   */
>>>
>>> public class DBCPPoolableManagedConnectionFactory extends
>>> PoolableManagedConnectionFactory {
>>>
>>>
>>>      @Override
>>>
>>>      public synchronized PooledObject<PoolableConnection> makeObject()
>>> throws
>>> Exception {
>>>
>>>          PooledObject<PoolableConnection> pooledObject =
>>> super.makeObject();
>>>
>>>          pooledObject.getObject().setCacheState(false);
>>>
>>>          return pooledObject;
>>>
>>>      }
>>>
>>>
>>>      public DBCPPoolableManagedConnectionFactory(XAConnectionFactory
>>> connFactory, ObjectName dataSourceJmxName) {
>>>
>>>          super(connFactory, dataSourceJmxName);
>>>
>>>      }
>>>
>>>
>>> }
>>>
>>> Regards
>>> Scott
>>>
>>> On 26 February 2016 at 19:48, Vyom Jain <vy...@gmail.com> wrote:
>>>
>>> Hello Everyone,
>>>>
>>>> I've been observing frequent errors such as
>>>> "org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
>>>> connection with the database. (Unable to acquire a new connection from
>>>>
>>> the
>>>
>>>> pool)". While OFBiz restart helps for sometime, but we would like to
>>>>
>>> avoid
>>>
>>>> frequent restarts.
>>>>
>>>> I'm wondering if someone else has faced same issues or would like to
>>>>
>>> share
>>>
>>>> their thoughts. Could it be that upgrade to DBCP2 has introduced new
>>>>
>>> bugs?
>>>
>>>> I'm using OFBiz trunk (revision 1704086) + MySQL v5.6 + MySQL JDBC
>>>> driver
>>>> v5.1.38 + JDK 7. This version uses Apache DBCP2.
>>>>
>>>> entityengine.xml configuration -
>>>> - pool-minsize = "2"
>>>> - pool-maxsize = "250"
>>>> - time-between-eviction-runs-millis="600000" [used to give same errors
>>>>
>>> with
>>>
>>>> -1]
>>>>
>>>> Below is the stacktrace of associated with one of these errors -
>>>>
>>>> org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
>>>> connection with the database. (Unable to acquire a new connection from
>>>>
>>> the
>>>
>>>> pool). Rolling back transaction.
>>>> org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
>>>> connection with the database. (Unable to acquire a new connection from
>>>>
>>> the
>>>
>>>> pool)
>>>>      at
>>>> org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:263)
>>>> ~[ofbiz-entity.jar:?]
>>>>      at
>>>>
>>>>
>>> org.ofbiz.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:366)
>>>
>>>> ~[ofbiz-entity.jar:?]
>>>>      at
>>>>
>>>>
>>> org.ofbiz.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:350)
>>>
>>>> ~[ofbiz-entity.jar:?]
>>>>      at
>>>> org.ofbiz.entity.datasource.GenericDAO.select(GenericDAO.java:521)
>>>> ~[ofbiz-entity.jar:?]
>>>>      at
>>>> org.ofbiz.entity.datasource.GenericDAO.select(GenericDAO.java:492)
>>>> ~[ofbiz-entity.jar:?]
>>>>      at
>>>>
>>>>
>>>>
>>> org.ofbiz.entity.datasource.GenericHelperDAO.findByPrimaryKey(GenericHelperDAO.java:80)
>>>
>>>> ~[ofbiz-entity.jar:?]
>>>>      at
>>>> org.ofbiz.entity.GenericDelegator.findOne(GenericDelegator.java:1580)
>>>> [ofbiz-entity.jar:?]
>>>>      at com.mycompany.CustomEvents.addToCart(CustomEvents.java:544)
>>>> [ofbiz-mycompanyerp.jar:?]
>>>>      at sun.reflect.GeneratedMethodAccessor202.invoke(Unknown Source)
>>>>
>>> ~[?:?]
>>>
>>>>      at
>>>>
>>>>
>>>>
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>
>>>> ~[?:1.7.0_79]
>>>>      at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79]
>>>>      at
>>>> org.ofbiz.webapp.event.JavaEventHandler.invoke(JavaEventHandler.java:92)
>>>> [ofbiz-webapp.jar:?]
>>>>      at
>>>> org.ofbiz.webapp.event.JavaEventHandler.invoke(JavaEventHandler.java:78)
>>>> [ofbiz-webapp.jar:?]
>>>>      at
>>>>
>>>> org.ofbiz.webapp.control.RequestHandler.runEvent(RequestHandler.java:759)
>>>> [ofbiz-webapp.jar:?]
>>>>      at
>>>>
>>>>
>>> org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:476)
>>>
>>>> [ofbiz-webapp.jar:?]
>>>>      at
>>>> org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:213)
>>>> [ofbiz-webapp.jar:?]
>>>>      at
>>>> org.ofbiz.webapp.control.ControlServlet.doPost(ControlServlet.java:88)
>>>> [ofbiz-webapp.jar:?]
>>>>      at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
>>>> [servlet-api-3.0.jar:?]
>>>>      at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>>>> [servlet-api-3.0.jar:?]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
>>>
>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>>
>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>      at
>>>> org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:324)
>>>> [ofbiz-webapp.jar:?]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>>
>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>>
>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
>>>
>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
>>>
>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
>>>
>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
>>>
>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
>>>
>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
>>>
>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>      at
>>>>
>>>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>      at
>>>>
>>>>
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
>>>
>>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>>      at
>>>> org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:190)
>>>> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
>>>
>>>> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
>>>>      at
>>>>
>>>>
>>>> org.apache.tomcat.util.net
>>> .JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
>>>
>>>> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
>>>>      at
>>>>
>>>>
>>>>
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>
>>>> [?:1.7.0_79]
>>>>      at
>>>>
>>>>
>>>>
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>
>>>> [?:1.7.0_79]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>>>
>>>> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
>>>>      at java.lang.Thread.run(Thread.java:745) [?:1.7.0_79]
>>>> Caused by: java.sql.SQLException: Unable to acquire a new connection
>>>> from
>>>> the pool
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.commons.dbcp2.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:130)
>>>
>>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.commons.dbcp2.managed.ManagedConnection.<init>(ManagedConnection.java:60)
>>>
>>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.commons.dbcp2.managed.ManagedDataSource.getConnection(ManagedDataSource.java:82)
>>>
>>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>>      at
>>>>
>>>>
>>>>
>>> org.ofbiz.entity.connection.DebugManagedDataSource.getConnection(DebugManagedDataSource.java:52)
>>>
>>>> ~[ofbiz-entity.jar:?]
>>>>      at
>>>>
>>>>
>>>>
>>> org.ofbiz.entity.connection.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:63)
>>>
>>>> ~[ofbiz-entity.jar:?]
>>>>      at
>>>>
>>>>
>>>>
>>> org.ofbiz.geronimo.GeronimoTransactionFactory.getConnection(GeronimoTransactionFactory.java:83)
>>>
>>>> ~[ofbiz-geronimo.jar:?]
>>>>      at
>>>> org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:260)
>>>> ~[ofbiz-entity.jar:?]
>>>>      ... 38 more
>>>> Caused by: java.util.NoSuchElementException: Timeout waiting for idle
>>>> object
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:449)
>>>
>>>> ~[commons-pool2-2.3.jar:2.3]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
>>>
>>>> ~[commons-pool2-2.3.jar:2.3]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.commons.dbcp2.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:127)
>>>
>>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.commons.dbcp2.managed.ManagedConnection.<init>(ManagedConnection.java:60)
>>>
>>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>>      at
>>>>
>>>>
>>>>
>>> org.apache.commons.dbcp2.managed.ManagedDataSource.getConnection(ManagedDataSource.java:82)
>>>
>>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>>      at
>>>>
>>>>
>>>>
>>> org.ofbiz.entity.connection.DebugManagedDataSource.getConnection(DebugManagedDataSource.java:52)
>>>
>>>> ~[ofbiz-entity.jar:?]
>>>>      at
>>>>
>>>>
>>>>
>>> org.ofbiz.entity.connection.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:63)
>>>
>>>> ~[ofbiz-entity.jar:?]
>>>>      at
>>>>
>>>>
>>>>
>>> org.ofbiz.geronimo.GeronimoTransactionFactory.getConnection(GeronimoTransactionFactory.java:83)
>>>
>>>> ~[ofbiz-geronimo.jar:?]
>>>>      at
>>>> org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:260)
>>>> ~[ofbiz-entity.jar:?]
>>>>      ... 38 more
>>>>
>>>> --
>>>> Vyom
>>>>
>>>>

Re: OFBiz trunk + Apache DBCP2 + MySQL connectivity issues

Posted by Jacques Le Roux <ja...@les7arts.com>.
Hi Scott,

I think it's a good question from Vyom. Is that only specific to MySQL? A specific MySQL version?

Thanks

Jacques

Le 29/02/2016 13:31, Vyom Jain a écrit :
> Thanks, shouldn't this be committed in SVN then?
>
> --
> Vyom
>
> On 29 February 2016 at 14:51, Scott Gray <sc...@hotwaxsystems.com>
> wrote:
>
>> Actually yes, I have encountered this.  I fixed it with the following
>> class, which you would then use in the DBCPConnectionFactory class in place
>> of the PoolableManagedConnectionFactory.
>>
>> /**
>>
>>   * An extension to the DBCP2 PoolableManagedConnectionFactory that ensures
>> that
>>
>>   * PoolableConnections are always set to setCacheState(false).  This is
>> needed
>>
>>   * because otherwise PoolableConnections will cache the autoCommit setting
>> of the
>>
>>   * underlying connection even though the flag on the underlying connection
>> is often set
>>
>>   * directly (specifically by LocalXAConnectionFactory.LocalXAResource, see
>> start()
>>
>>   * and commit()).
>>
>>   */
>>
>> public class DBCPPoolableManagedConnectionFactory extends
>> PoolableManagedConnectionFactory {
>>
>>
>>      @Override
>>
>>      public synchronized PooledObject<PoolableConnection> makeObject()
>> throws
>> Exception {
>>
>>          PooledObject<PoolableConnection> pooledObject = super.makeObject();
>>
>>          pooledObject.getObject().setCacheState(false);
>>
>>          return pooledObject;
>>
>>      }
>>
>>
>>      public DBCPPoolableManagedConnectionFactory(XAConnectionFactory
>> connFactory, ObjectName dataSourceJmxName) {
>>
>>          super(connFactory, dataSourceJmxName);
>>
>>      }
>>
>>
>> }
>>
>> Regards
>> Scott
>>
>> On 26 February 2016 at 19:48, Vyom Jain <vy...@gmail.com> wrote:
>>
>>> Hello Everyone,
>>>
>>> I've been observing frequent errors such as
>>> "org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
>>> connection with the database. (Unable to acquire a new connection from
>> the
>>> pool)". While OFBiz restart helps for sometime, but we would like to
>> avoid
>>> frequent restarts.
>>>
>>> I'm wondering if someone else has faced same issues or would like to
>> share
>>> their thoughts. Could it be that upgrade to DBCP2 has introduced new
>> bugs?
>>> I'm using OFBiz trunk (revision 1704086) + MySQL v5.6 + MySQL JDBC driver
>>> v5.1.38 + JDK 7. This version uses Apache DBCP2.
>>>
>>> entityengine.xml configuration -
>>> - pool-minsize = "2"
>>> - pool-maxsize = "250"
>>> - time-between-eviction-runs-millis="600000" [used to give same errors
>> with
>>> -1]
>>>
>>> Below is the stacktrace of associated with one of these errors -
>>>
>>> org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
>>> connection with the database. (Unable to acquire a new connection from
>> the
>>> pool). Rolling back transaction.
>>> org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
>>> connection with the database. (Unable to acquire a new connection from
>> the
>>> pool)
>>>      at
>>> org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:263)
>>> ~[ofbiz-entity.jar:?]
>>>      at
>>>
>> org.ofbiz.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:366)
>>> ~[ofbiz-entity.jar:?]
>>>      at
>>>
>> org.ofbiz.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:350)
>>> ~[ofbiz-entity.jar:?]
>>>      at org.ofbiz.entity.datasource.GenericDAO.select(GenericDAO.java:521)
>>> ~[ofbiz-entity.jar:?]
>>>      at org.ofbiz.entity.datasource.GenericDAO.select(GenericDAO.java:492)
>>> ~[ofbiz-entity.jar:?]
>>>      at
>>>
>>>
>> org.ofbiz.entity.datasource.GenericHelperDAO.findByPrimaryKey(GenericHelperDAO.java:80)
>>> ~[ofbiz-entity.jar:?]
>>>      at
>>> org.ofbiz.entity.GenericDelegator.findOne(GenericDelegator.java:1580)
>>> [ofbiz-entity.jar:?]
>>>      at com.mycompany.CustomEvents.addToCart(CustomEvents.java:544)
>>> [ofbiz-mycompanyerp.jar:?]
>>>      at sun.reflect.GeneratedMethodAccessor202.invoke(Unknown Source)
>> ~[?:?]
>>>      at
>>>
>>>
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>> ~[?:1.7.0_79]
>>>      at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79]
>>>      at
>>> org.ofbiz.webapp.event.JavaEventHandler.invoke(JavaEventHandler.java:92)
>>> [ofbiz-webapp.jar:?]
>>>      at
>>> org.ofbiz.webapp.event.JavaEventHandler.invoke(JavaEventHandler.java:78)
>>> [ofbiz-webapp.jar:?]
>>>      at
>>> org.ofbiz.webapp.control.RequestHandler.runEvent(RequestHandler.java:759)
>>> [ofbiz-webapp.jar:?]
>>>      at
>>>
>> org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:476)
>>> [ofbiz-webapp.jar:?]
>>>      at
>>> org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:213)
>>> [ofbiz-webapp.jar:?]
>>>      at
>>> org.ofbiz.webapp.control.ControlServlet.doPost(ControlServlet.java:88)
>>> [ofbiz-webapp.jar:?]
>>>      at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
>>> [servlet-api-3.0.jar:?]
>>>      at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>>> [servlet-api-3.0.jar:?]
>>>      at
>>>
>>>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>      at
>>>
>>>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>      at
>>> org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:324)
>>> [ofbiz-webapp.jar:?]
>>>      at
>>>
>>>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>      at
>>>
>>>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>      at
>>>
>>>
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>      at
>>>
>>>
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>      at
>>>
>>>
>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>      at
>>>
>>>
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>      at
>>>
>>>
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>      at
>>>
>>>
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>      at
>>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>      at
>>>
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
>>> [tomcat-7.0.64-catalina.jar:7.0.64]
>>>      at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:190)
>>> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
>>>      at
>>>
>>>
>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
>>> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
>>>      at
>>>
>>>
>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
>>> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
>>>      at
>>>
>>>
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>> [?:1.7.0_79]
>>>      at
>>>
>>>
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>> [?:1.7.0_79]
>>>      at
>>>
>>>
>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>>> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
>>>      at java.lang.Thread.run(Thread.java:745) [?:1.7.0_79]
>>> Caused by: java.sql.SQLException: Unable to acquire a new connection from
>>> the pool
>>>      at
>>>
>>>
>> org.apache.commons.dbcp2.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:130)
>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>      at
>>>
>>>
>> org.apache.commons.dbcp2.managed.ManagedConnection.<init>(ManagedConnection.java:60)
>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>      at
>>>
>>>
>> org.apache.commons.dbcp2.managed.ManagedDataSource.getConnection(ManagedDataSource.java:82)
>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>      at
>>>
>>>
>> org.ofbiz.entity.connection.DebugManagedDataSource.getConnection(DebugManagedDataSource.java:52)
>>> ~[ofbiz-entity.jar:?]
>>>      at
>>>
>>>
>> org.ofbiz.entity.connection.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:63)
>>> ~[ofbiz-entity.jar:?]
>>>      at
>>>
>>>
>> org.ofbiz.geronimo.GeronimoTransactionFactory.getConnection(GeronimoTransactionFactory.java:83)
>>> ~[ofbiz-geronimo.jar:?]
>>>      at
>>> org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:260)
>>> ~[ofbiz-entity.jar:?]
>>>      ... 38 more
>>> Caused by: java.util.NoSuchElementException: Timeout waiting for idle
>>> object
>>>      at
>>>
>>>
>> org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:449)
>>> ~[commons-pool2-2.3.jar:2.3]
>>>      at
>>>
>>>
>> org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
>>> ~[commons-pool2-2.3.jar:2.3]
>>>      at
>>>
>>>
>> org.apache.commons.dbcp2.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:127)
>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>      at
>>>
>>>
>> org.apache.commons.dbcp2.managed.ManagedConnection.<init>(ManagedConnection.java:60)
>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>      at
>>>
>>>
>> org.apache.commons.dbcp2.managed.ManagedDataSource.getConnection(ManagedDataSource.java:82)
>>> ~[commons-dbcp2-2.1.jar:2.1]
>>>      at
>>>
>>>
>> org.ofbiz.entity.connection.DebugManagedDataSource.getConnection(DebugManagedDataSource.java:52)
>>> ~[ofbiz-entity.jar:?]
>>>      at
>>>
>>>
>> org.ofbiz.entity.connection.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:63)
>>> ~[ofbiz-entity.jar:?]
>>>      at
>>>
>>>
>> org.ofbiz.geronimo.GeronimoTransactionFactory.getConnection(GeronimoTransactionFactory.java:83)
>>> ~[ofbiz-geronimo.jar:?]
>>>      at
>>> org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:260)
>>> ~[ofbiz-entity.jar:?]
>>>      ... 38 more
>>>
>>> --
>>> Vyom
>>>

Re: OFBiz trunk + Apache DBCP2 + MySQL connectivity issues

Posted by Vyom Jain <vy...@gmail.com>.
Thanks, shouldn't this be committed in SVN then?

--
Vyom

On 29 February 2016 at 14:51, Scott Gray <sc...@hotwaxsystems.com>
wrote:

> Actually yes, I have encountered this.  I fixed it with the following
> class, which you would then use in the DBCPConnectionFactory class in place
> of the PoolableManagedConnectionFactory.
>
> /**
>
>  * An extension to the DBCP2 PoolableManagedConnectionFactory that ensures
> that
>
>  * PoolableConnections are always set to setCacheState(false).  This is
> needed
>
>  * because otherwise PoolableConnections will cache the autoCommit setting
> of the
>
>  * underlying connection even though the flag on the underlying connection
> is often set
>
>  * directly (specifically by LocalXAConnectionFactory.LocalXAResource, see
> start()
>
>  * and commit()).
>
>  */
>
> public class DBCPPoolableManagedConnectionFactory extends
> PoolableManagedConnectionFactory {
>
>
>     @Override
>
>     public synchronized PooledObject<PoolableConnection> makeObject()
> throws
> Exception {
>
>         PooledObject<PoolableConnection> pooledObject = super.makeObject();
>
>         pooledObject.getObject().setCacheState(false);
>
>         return pooledObject;
>
>     }
>
>
>     public DBCPPoolableManagedConnectionFactory(XAConnectionFactory
> connFactory, ObjectName dataSourceJmxName) {
>
>         super(connFactory, dataSourceJmxName);
>
>     }
>
>
> }
>
> Regards
> Scott
>
> On 26 February 2016 at 19:48, Vyom Jain <vy...@gmail.com> wrote:
>
> > Hello Everyone,
> >
> > I've been observing frequent errors such as
> > "org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
> > connection with the database. (Unable to acquire a new connection from
> the
> > pool)". While OFBiz restart helps for sometime, but we would like to
> avoid
> > frequent restarts.
> >
> > I'm wondering if someone else has faced same issues or would like to
> share
> > their thoughts. Could it be that upgrade to DBCP2 has introduced new
> bugs?
> >
> > I'm using OFBiz trunk (revision 1704086) + MySQL v5.6 + MySQL JDBC driver
> > v5.1.38 + JDK 7. This version uses Apache DBCP2.
> >
> > entityengine.xml configuration -
> > - pool-minsize = "2"
> > - pool-maxsize = "250"
> > - time-between-eviction-runs-millis="600000" [used to give same errors
> with
> > -1]
> >
> > Below is the stacktrace of associated with one of these errors -
> >
> > org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
> > connection with the database. (Unable to acquire a new connection from
> the
> > pool). Rolling back transaction.
> > org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
> > connection with the database. (Unable to acquire a new connection from
> the
> > pool)
> >     at
> > org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:263)
> > ~[ofbiz-entity.jar:?]
> >     at
> >
> org.ofbiz.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:366)
> > ~[ofbiz-entity.jar:?]
> >     at
> >
> org.ofbiz.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:350)
> > ~[ofbiz-entity.jar:?]
> >     at org.ofbiz.entity.datasource.GenericDAO.select(GenericDAO.java:521)
> > ~[ofbiz-entity.jar:?]
> >     at org.ofbiz.entity.datasource.GenericDAO.select(GenericDAO.java:492)
> > ~[ofbiz-entity.jar:?]
> >     at
> >
> >
> org.ofbiz.entity.datasource.GenericHelperDAO.findByPrimaryKey(GenericHelperDAO.java:80)
> > ~[ofbiz-entity.jar:?]
> >     at
> > org.ofbiz.entity.GenericDelegator.findOne(GenericDelegator.java:1580)
> > [ofbiz-entity.jar:?]
> >     at com.mycompany.CustomEvents.addToCart(CustomEvents.java:544)
> > [ofbiz-mycompanyerp.jar:?]
> >     at sun.reflect.GeneratedMethodAccessor202.invoke(Unknown Source)
> ~[?:?]
> >     at
> >
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> > ~[?:1.7.0_79]
> >     at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79]
> >     at
> > org.ofbiz.webapp.event.JavaEventHandler.invoke(JavaEventHandler.java:92)
> > [ofbiz-webapp.jar:?]
> >     at
> > org.ofbiz.webapp.event.JavaEventHandler.invoke(JavaEventHandler.java:78)
> > [ofbiz-webapp.jar:?]
> >     at
> > org.ofbiz.webapp.control.RequestHandler.runEvent(RequestHandler.java:759)
> > [ofbiz-webapp.jar:?]
> >     at
> >
> org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:476)
> > [ofbiz-webapp.jar:?]
> >     at
> > org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:213)
> > [ofbiz-webapp.jar:?]
> >     at
> > org.ofbiz.webapp.control.ControlServlet.doPost(ControlServlet.java:88)
> > [ofbiz-webapp.jar:?]
> >     at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
> > [servlet-api-3.0.jar:?]
> >     at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
> > [servlet-api-3.0.jar:?]
> >     at
> >
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
> > [tomcat-7.0.64-catalina.jar:7.0.64]
> >     at
> >
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
> > [tomcat-7.0.64-catalina.jar:7.0.64]
> >     at
> > org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:324)
> > [ofbiz-webapp.jar:?]
> >     at
> >
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
> > [tomcat-7.0.64-catalina.jar:7.0.64]
> >     at
> >
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
> > [tomcat-7.0.64-catalina.jar:7.0.64]
> >     at
> >
> >
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
> > [tomcat-7.0.64-catalina.jar:7.0.64]
> >     at
> >
> >
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
> > [tomcat-7.0.64-catalina.jar:7.0.64]
> >     at
> >
> >
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
> > [tomcat-7.0.64-catalina.jar:7.0.64]
> >     at
> >
> >
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
> > [tomcat-7.0.64-catalina.jar:7.0.64]
> >     at
> >
> >
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
> > [tomcat-7.0.64-catalina.jar:7.0.64]
> >     at
> >
> >
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
> > [tomcat-7.0.64-catalina.jar:7.0.64]
> >     at
> > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
> > [tomcat-7.0.64-catalina.jar:7.0.64]
> >     at
> >
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
> > [tomcat-7.0.64-catalina.jar:7.0.64]
> >     at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:190)
> > [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
> >     at
> >
> >
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
> > [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
> >     at
> >
> >
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
> > [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
> >     at
> >
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> > [?:1.7.0_79]
> >     at
> >
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> > [?:1.7.0_79]
> >     at
> >
> >
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
> > [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
> >     at java.lang.Thread.run(Thread.java:745) [?:1.7.0_79]
> > Caused by: java.sql.SQLException: Unable to acquire a new connection from
> > the pool
> >     at
> >
> >
> org.apache.commons.dbcp2.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:130)
> > ~[commons-dbcp2-2.1.jar:2.1]
> >     at
> >
> >
> org.apache.commons.dbcp2.managed.ManagedConnection.<init>(ManagedConnection.java:60)
> > ~[commons-dbcp2-2.1.jar:2.1]
> >     at
> >
> >
> org.apache.commons.dbcp2.managed.ManagedDataSource.getConnection(ManagedDataSource.java:82)
> > ~[commons-dbcp2-2.1.jar:2.1]
> >     at
> >
> >
> org.ofbiz.entity.connection.DebugManagedDataSource.getConnection(DebugManagedDataSource.java:52)
> > ~[ofbiz-entity.jar:?]
> >     at
> >
> >
> org.ofbiz.entity.connection.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:63)
> > ~[ofbiz-entity.jar:?]
> >     at
> >
> >
> org.ofbiz.geronimo.GeronimoTransactionFactory.getConnection(GeronimoTransactionFactory.java:83)
> > ~[ofbiz-geronimo.jar:?]
> >     at
> > org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:260)
> > ~[ofbiz-entity.jar:?]
> >     ... 38 more
> > Caused by: java.util.NoSuchElementException: Timeout waiting for idle
> > object
> >     at
> >
> >
> org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:449)
> > ~[commons-pool2-2.3.jar:2.3]
> >     at
> >
> >
> org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
> > ~[commons-pool2-2.3.jar:2.3]
> >     at
> >
> >
> org.apache.commons.dbcp2.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:127)
> > ~[commons-dbcp2-2.1.jar:2.1]
> >     at
> >
> >
> org.apache.commons.dbcp2.managed.ManagedConnection.<init>(ManagedConnection.java:60)
> > ~[commons-dbcp2-2.1.jar:2.1]
> >     at
> >
> >
> org.apache.commons.dbcp2.managed.ManagedDataSource.getConnection(ManagedDataSource.java:82)
> > ~[commons-dbcp2-2.1.jar:2.1]
> >     at
> >
> >
> org.ofbiz.entity.connection.DebugManagedDataSource.getConnection(DebugManagedDataSource.java:52)
> > ~[ofbiz-entity.jar:?]
> >     at
> >
> >
> org.ofbiz.entity.connection.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:63)
> > ~[ofbiz-entity.jar:?]
> >     at
> >
> >
> org.ofbiz.geronimo.GeronimoTransactionFactory.getConnection(GeronimoTransactionFactory.java:83)
> > ~[ofbiz-geronimo.jar:?]
> >     at
> > org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:260)
> > ~[ofbiz-entity.jar:?]
> >     ... 38 more
> >
> > --
> > Vyom
> >
>

Re: OFBiz trunk + Apache DBCP2 + MySQL connectivity issues

Posted by Scott Gray <sc...@hotwaxsystems.com>.
Actually yes, I have encountered this.  I fixed it with the following
class, which you would then use in the DBCPConnectionFactory class in place
of the PoolableManagedConnectionFactory.

/**

 * An extension to the DBCP2 PoolableManagedConnectionFactory that ensures
that

 * PoolableConnections are always set to setCacheState(false).  This is
needed

 * because otherwise PoolableConnections will cache the autoCommit setting
of the

 * underlying connection even though the flag on the underlying connection
is often set

 * directly (specifically by LocalXAConnectionFactory.LocalXAResource, see
start()

 * and commit()).

 */

public class DBCPPoolableManagedConnectionFactory extends
PoolableManagedConnectionFactory {


    @Override

    public synchronized PooledObject<PoolableConnection> makeObject() throws
Exception {

        PooledObject<PoolableConnection> pooledObject = super.makeObject();

        pooledObject.getObject().setCacheState(false);

        return pooledObject;

    }


    public DBCPPoolableManagedConnectionFactory(XAConnectionFactory
connFactory, ObjectName dataSourceJmxName) {

        super(connFactory, dataSourceJmxName);

    }


}

Regards
Scott

On 26 February 2016 at 19:48, Vyom Jain <vy...@gmail.com> wrote:

> Hello Everyone,
>
> I've been observing frequent errors such as
> "org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
> connection with the database. (Unable to acquire a new connection from the
> pool)". While OFBiz restart helps for sometime, but we would like to avoid
> frequent restarts.
>
> I'm wondering if someone else has faced same issues or would like to share
> their thoughts. Could it be that upgrade to DBCP2 has introduced new bugs?
>
> I'm using OFBiz trunk (revision 1704086) + MySQL v5.6 + MySQL JDBC driver
> v5.1.38 + JDK 7. This version uses Apache DBCP2.
>
> entityengine.xml configuration -
> - pool-minsize = "2"
> - pool-maxsize = "250"
> - time-between-eviction-runs-millis="600000" [used to give same errors with
> -1]
>
> Below is the stacktrace of associated with one of these errors -
>
> org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
> connection with the database. (Unable to acquire a new connection from the
> pool). Rolling back transaction.
> org.ofbiz.entity.GenericDataSourceException: Unable to esablish a
> connection with the database. (Unable to acquire a new connection from the
> pool)
>     at
> org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:263)
> ~[ofbiz-entity.jar:?]
>     at
> org.ofbiz.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:366)
> ~[ofbiz-entity.jar:?]
>     at
> org.ofbiz.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:350)
> ~[ofbiz-entity.jar:?]
>     at org.ofbiz.entity.datasource.GenericDAO.select(GenericDAO.java:521)
> ~[ofbiz-entity.jar:?]
>     at org.ofbiz.entity.datasource.GenericDAO.select(GenericDAO.java:492)
> ~[ofbiz-entity.jar:?]
>     at
>
> org.ofbiz.entity.datasource.GenericHelperDAO.findByPrimaryKey(GenericHelperDAO.java:80)
> ~[ofbiz-entity.jar:?]
>     at
> org.ofbiz.entity.GenericDelegator.findOne(GenericDelegator.java:1580)
> [ofbiz-entity.jar:?]
>     at com.mycompany.CustomEvents.addToCart(CustomEvents.java:544)
> [ofbiz-mycompanyerp.jar:?]
>     at sun.reflect.GeneratedMethodAccessor202.invoke(Unknown Source) ~[?:?]
>     at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:1.7.0_79]
>     at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79]
>     at
> org.ofbiz.webapp.event.JavaEventHandler.invoke(JavaEventHandler.java:92)
> [ofbiz-webapp.jar:?]
>     at
> org.ofbiz.webapp.event.JavaEventHandler.invoke(JavaEventHandler.java:78)
> [ofbiz-webapp.jar:?]
>     at
> org.ofbiz.webapp.control.RequestHandler.runEvent(RequestHandler.java:759)
> [ofbiz-webapp.jar:?]
>     at
> org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:476)
> [ofbiz-webapp.jar:?]
>     at
> org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:213)
> [ofbiz-webapp.jar:?]
>     at
> org.ofbiz.webapp.control.ControlServlet.doPost(ControlServlet.java:88)
> [ofbiz-webapp.jar:?]
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
> [servlet-api-3.0.jar:?]
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
> [servlet-api-3.0.jar:?]
>     at
>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
> [tomcat-7.0.64-catalina.jar:7.0.64]
>     at
>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
> [tomcat-7.0.64-catalina.jar:7.0.64]
>     at
> org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:324)
> [ofbiz-webapp.jar:?]
>     at
>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
> [tomcat-7.0.64-catalina.jar:7.0.64]
>     at
>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
> [tomcat-7.0.64-catalina.jar:7.0.64]
>     at
>
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
> [tomcat-7.0.64-catalina.jar:7.0.64]
>     at
>
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
> [tomcat-7.0.64-catalina.jar:7.0.64]
>     at
>
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
> [tomcat-7.0.64-catalina.jar:7.0.64]
>     at
>
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
> [tomcat-7.0.64-catalina.jar:7.0.64]
>     at
>
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
> [tomcat-7.0.64-catalina.jar:7.0.64]
>     at
>
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
> [tomcat-7.0.64-catalina.jar:7.0.64]
>     at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
> [tomcat-7.0.64-catalina.jar:7.0.64]
>     at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
> [tomcat-7.0.64-catalina.jar:7.0.64]
>     at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:190)
> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
>     at
>
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
>     at
>
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
>     at
>
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> [?:1.7.0_79]
>     at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> [?:1.7.0_79]
>     at
>
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
> [tomcat-7.0.64-tomcat-coyote.jar:7.0.64]
>     at java.lang.Thread.run(Thread.java:745) [?:1.7.0_79]
> Caused by: java.sql.SQLException: Unable to acquire a new connection from
> the pool
>     at
>
> org.apache.commons.dbcp2.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:130)
> ~[commons-dbcp2-2.1.jar:2.1]
>     at
>
> org.apache.commons.dbcp2.managed.ManagedConnection.<init>(ManagedConnection.java:60)
> ~[commons-dbcp2-2.1.jar:2.1]
>     at
>
> org.apache.commons.dbcp2.managed.ManagedDataSource.getConnection(ManagedDataSource.java:82)
> ~[commons-dbcp2-2.1.jar:2.1]
>     at
>
> org.ofbiz.entity.connection.DebugManagedDataSource.getConnection(DebugManagedDataSource.java:52)
> ~[ofbiz-entity.jar:?]
>     at
>
> org.ofbiz.entity.connection.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:63)
> ~[ofbiz-entity.jar:?]
>     at
>
> org.ofbiz.geronimo.GeronimoTransactionFactory.getConnection(GeronimoTransactionFactory.java:83)
> ~[ofbiz-geronimo.jar:?]
>     at
> org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:260)
> ~[ofbiz-entity.jar:?]
>     ... 38 more
> Caused by: java.util.NoSuchElementException: Timeout waiting for idle
> object
>     at
>
> org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:449)
> ~[commons-pool2-2.3.jar:2.3]
>     at
>
> org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
> ~[commons-pool2-2.3.jar:2.3]
>     at
>
> org.apache.commons.dbcp2.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:127)
> ~[commons-dbcp2-2.1.jar:2.1]
>     at
>
> org.apache.commons.dbcp2.managed.ManagedConnection.<init>(ManagedConnection.java:60)
> ~[commons-dbcp2-2.1.jar:2.1]
>     at
>
> org.apache.commons.dbcp2.managed.ManagedDataSource.getConnection(ManagedDataSource.java:82)
> ~[commons-dbcp2-2.1.jar:2.1]
>     at
>
> org.ofbiz.entity.connection.DebugManagedDataSource.getConnection(DebugManagedDataSource.java:52)
> ~[ofbiz-entity.jar:?]
>     at
>
> org.ofbiz.entity.connection.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:63)
> ~[ofbiz-entity.jar:?]
>     at
>
> org.ofbiz.geronimo.GeronimoTransactionFactory.getConnection(GeronimoTransactionFactory.java:83)
> ~[ofbiz-geronimo.jar:?]
>     at
> org.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:260)
> ~[ofbiz-entity.jar:?]
>     ... 38 more
>
> --
> Vyom
>