How to resolve : oracle.ucp.UniversalConnectionPoolException: In Outsystem9

How to resolve : oracle.ucp.UniversalConnectionPoolException: In Outsystem9

  
Hi,
What could be the possible root cause and resolution for the below error in Outsystem9. This is coming under load.
ERROR [outsystems.runtimeservices.db.jdbcpool.JDBCPool] (http-/0.0.0.0:8080-147) Could not create a connection: java.sql.SQLException: Exception occurred while getting connection: oracle.ucp.UniversalConnectionPoolException: All connections in the Universal Connection Pool are in use
        at oracle.ucp.util.UCPErrorHandler.newSQLException(UCPErrorHandler.java:541) [ucp.jar:11.2.0.1.0]
        at oracle.ucp.jdbc.PoolDataSourceImpl.throwSQLException(PoolDataSourceImpl.java:588) [ucp.jar:11.2.0.1.0]
        at oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:669) [ucp.jar:11.2.0.1.0]
        at oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:614) [ucp.jar:11.2.0.1.0]
        at oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:608) [ucp.jar:11.2.0.1.0]
        at outsystems.runtimeservices.db.jdbcpool.JDBCPool.getConnection(Unknown Source) [outsystems.runtimeservices.jar:]
        at outsystems.hubedition.extensibility.data.transactionservice.ConnectionPoolBridge.getConnection(Unknown Source) [outsystems.hubedition.databaseabstractionlayer.jar:]

Thanks
Satya
Hi Satya,

Considering the error only occurs under load contiditions maybe the connection pool maximum limit should be increased.

Try following these steps:
     i) Run the 'configurationtool.sh' script in your Platform Server
    ii) In the 'Skip Advanced configurations?' question answer 'No'
   iii) In the 'Application Server' section increase the value of the 'JDBC Connection Pool Maximum Size'

Hopefully this will prevent the error from occurring!

Thanks,

Ricardo Neto


Thanks Ricardo.
What is the suggested value for JDBC Connection Pool Maximum Size and JDBC Connection Pool minimum Size.Can we change it in perf.xml file or any other configuration file instead of running configurationtool.sh.
Do you have any idea where should I change the below parameters in Outsystem9.
 
Parameters value
Default Query timeout 300
Update Query timeout 600
JDBC minimum pool size 50

Regards
Satya
Hi Satya,

The default values for the minimum and maximum pool sizes are 10 and 100 respectively but often depend on the factory type.

You can change these values, as well as the timeout parameters you mention, in the 'prefs.xml' file although, keep in mind that the next time you run 'configurationtool.sh' these will be overwritten.

Thanks,

Ricardo Neto
Hi Satya,

Have you resolved this issue? I am also experiencing the same issue while publishing the espace. Please let me know the solution.

Appreciate all your help.
About this issue, this is a very generic error. There is usually a more specific error you can find in server.log detailing the true underlying issue why the connection was not able to be opened.

What does the log say ?
Hi Ricardo Silva,

thank you.


Please find here with attached an server.log.  the exception started from this point and seems this is related to FACES life cycle.
"06:03:46,923 SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (ServerService Thread Pool -- 124) JSF1051: Service entry 'org.jboss.as.jsf.injection.JSFInjectionProvider' does not extend DiscoverableInjectionProvider.  Entry will be ignored.
06:03:46,923 INFO  [javax.enterprise.resource.webcontainer.jsf.application] (ServerService Thread Pool -- 124) JSF1048: PostConstruct/PreDestroy annotations present.  ManagedBeans methods marked with these annotations will have said annotations processed."
 
"java.sql.SQLException: Exception occurred while getting connection: oracle.ucp.UniversalConnectionPoolException: All connections in the Universal Connection Pool are in use"

Under the covers, UCP still creates a server process or hands off to a shared server/dispatcher environment.

The message leads me to believe that the database 'processes' setting may be to low.