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 <scott.g...@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 <jacques.le.r...@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 <scott.g...@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 <vyom0...@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


Reply via email to