We recently upgraded our Oracle.ManagedDataAccess.Core version along with moving to .NET 8.0 but we are seeing an issue when we experience connection time outs.
When I do the following in a .NET 8.0 WPF application but the host I am pointing to is not reachable we are seeing a UnobservedTaskException being handled.
var oracleConnectionStringBuilder = new OracleConnectionStringBuilder
{
UserID = "XXX",
Password = "XXX",
DataSource = $"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XXX) (PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = XXX)))"
};
using var x = new OracleConnection(oracleConnectionStringBuilder.ConnectionString);
await x.OpenAsync();
Results in the following exception:
Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-50201: Oracle Communication: Failed to connect to server or failed to parse connect string
---> OracleInternal.Network.NetworkException (0x80004005): ORA-50201: Oracle Communication: Failed to connect to server or failed to parse connect string
---> OracleInternal.Network.NetworkException (0x80004005): ORA-12170: Cannot connect. TCP Connect timeout of 20000 for host X.X.X.X port 1521. (CONNECTION_ID=XXXXXXXXXXXXXXXXXXXXXXXX)
https://docs.oracle.com/error-help/db/ora-12170/
at OracleInternal.Network.TcpTransportAdapter.ConnectIterate()
at OracleInternal.Network.OracleCommunication.ConnectViaCO(ConnectionOption connOption, AddressResolution addrRes, Boolean bAsync)
at OracleInternal.Network.OracleCommunication.DoConnect(String tnsDescriptor, Boolean bAsync)
at OracleInternal.Network.OracleCommunication.Connect(String tnsDescriptor, Boolean doNAHandshake, String IName, ConnectionOption CO, Boolean bAsync)
at OracleInternal.ServiceObjects.OracleConnectionImpl.Connect(ConnectionString cs, Boolean bOpenEndUserSession, OracleConnection connRefForCriteria, String instanceName, Boolean bAsync)
at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPassw, Boolean bGetForApp, OracleConnection connRefForCriteria, String affinityInstanceName, Boolean bForceMatch, Boolean bAsync)
at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassw, Boolean bGetForApp, OracleConnection connRefForCriteria, String affinityInstanceName, Boolean bForceMatch, Boolean bAsync)
at OracleInternal.ConnectionPool.PoolManager`3.WaitForPendingGet()
--- End of stack trace from previous location ---
at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.GetAsync(ConnectionString cs, PM conPM, ConnectionString pmCS, OracleOpaqueString opaquePassw, OracleOpaqueString securedProxyPassw, OracleConnection connRefForCriteria, Boolean bAsync)
at OracleInternal.ServiceObjects.OracleConnectionInternal.OpenInternalAsync(Boolean bAsync)
at OracleInternal.ServiceObjects.OracleConnectionInternal.OpenAsyncHelper(CancellationToken cancellationToken)
at OracleInternal.ServiceObjects.OracleConnectionInternal.OpenAsyncHelper(CancellationToken cancellationToken)
at OracleInternal.ServiceObjects.OracleConnectionInternal.OpenAsync(CancellationToken cancellationToken)
And the following TaskScheduler.UnobservedTaskException being handled by my application.
System.AggregateException: A Task's exception(s) were not observed either by Waiting on the Task or accessing its Exception property. As a result, the unobserved exception was rethrown by the finalizer thread. (The I/O operation has been aborted because of either a thread exit or an application request.)
---> System.Net.Sockets.SocketException (995): The I/O operation has been aborted because of either a thread exit or an application request.
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
at System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.<>c.<.cctor>b__4_0(Object state)
--- End of inner exception stack trace ---
We are using 23.9.0 of Oracle.ManagedDataAccess.Core.
Was anything changed that would cause this when upgrading from 2.19.230?