Share via


Timeout issue in composite Operation of Oracle Adapter

Recently when I worked on wcf-oracle Adapter issue in BizTalk. I got the timeout exception very often during composite operations. I increased the timeout parameters to check if my operations are getting executed. To my surprise I found the timeout exception still occurring.

When I correlated the failed messages with the success ones, it had more instances of operation to be executed. When executing the failed scenario I could see that the number of active connections were high.

A message sent to adapter "WCF-Custom" on send port "WcfSendPort_OracleDBBinding_Package_XXX" with URI "oracledb://OracleDBServer/" is suspended. Error details: Microsoft.ServiceModel.Channels.Common.ConnectionException: Connection request
timed out --->
Oracle.DataAccess.Client.OracleException: Connection request timed out

at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)

at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)

at Oracle.DataAccess.Client.OracleConnection.Open()
at Microsoft.Adapters.OracleCommon.OracleCommonConnectionWrapper..ctor(String connectionString, OracleCommonExecutionHelper executionHelper)
at Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection(OracleCommonExecutionHelper executionHelper)

So, the issue was not while opening the connection but it exhausted the number of connections from the pool. Increasing the minPoolSize and maxPoolSize resolved the issue.

Note: Increasing the pool size might impact performance. Find the optimal value for the respective environment through trial and error.

Hope this helps!

Happy BizTalking!!

Written by
Shashidharan Krishnan

Reviewed by
Jainath Ramanathan

Microsoft GTSC, India