Dead threads while connecting
Posted: Fri 17 Feb 2012 03:54
While an app tries to connect to database server and retrieve some data, it sometimes raise an exception and it seems like it leaves dead threads when expcetion raised even when it's handled. So there are about 300 threads that getting service down.
Here is code invoked periodically on timer:
Exceptions are:
1. Attempted to read or write protected memory. This is often an indication that other memory is corrupt
2. Internal exception in Oracle client
3. SEHException - External component has thrown an exception
How can I manage it guys? Does BeginConnect and then force breaking by EndConnect will help?
Here is code invoked periodically on timer:
Code: Select all
Parallel.ForEach(dbs, pair =>
{
db l = pair.Value;
if (String.IsNullOrEmpty(l.city))
l.city = l.configCity;
using (OracleConnection conn = new OracleConnection(l.connString))
{
try
{
conn.Open();
}
catch (Exception exc)
{
Console.WriteLine(String.Format("({0}, {1}): {2}{3}", l.connAlias, l.lid, exc.Message, Environment.NewLine));
}
try
{
if ((conn != null) && (conn.State == ConnectionState.Open))
{
// This method just call stored procedure and then set received data to 'l' object
if (!DbConnection.SetBadicData(conn, ref l))
{
Console.WriteLine(String.Format("Couldn't refresh basic data on ({0}, {1})", l.connAlias, l.id));
}
// This method also just call procedure and set received data to object
if (!DbConnection.SetExtendedData(conn, ref l))
{
Console.WriteLine(String.Format("Couldn't refresh advanced data on ({0}, {1})", l.connAlias, l.lid));
}
}
}
catch (Exception exc)
{
Console.WriteLine(String.Format("({0}, {1}): {2}{3}", l.connAlias, l.lid, exc.Message, Environment.NewLine));
}
}
});
1. Attempted to read or write protected memory. This is often an indication that other memory is corrupt
2. Internal exception in Oracle client
3. SEHException - External component has thrown an exception
How can I manage it guys? Does BeginConnect and then force breaking by EndConnect will help?