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 <[email protected]>
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 <[email protected]>
> 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 <[email protected]>
> >> 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 <[email protected]> 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
> >>>>
> >>>>
>

Reply via email to