Proper Implementation of Transitional Error Handling (Azure)

For the last day or so, I have been trying to implement transient error handling in an Azure SQL database. Although I have a working connection to the database, I'm not sure if it handles temporary errors as expected.

So far, my approach has included

public static void SetRetryStratPol()
{
    const string defaultRetryStrategyName = "default";

    var strategy = new Incremental(defaultRetryStrategyName, 3, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2));
    var strategies = new List<RetryStrategy> { strategy };
    var manager = new RetryManager(strategies, defaultRetryStrategyName);
    RetryManager.SetDefault(manager);
    retryPolicy = new RetryPolicy<SqlDatabaseTransientErrorDetectionStrategy>(strategy);
    retryPolicy.Retrying += (obj, eventArgs) =>
                            {
                                var msg = String.Format("Retrying, CurrentRetryCount = {0} , Delay = {1}, Exception = {2}", eventArgs.CurrentRetryCount, eventArgs.Delay, eventArgs.LastException.Message);
                                System.Diagnostics.Debug.WriteLine(msg);
                            };
}

I call this method of Global.asax's, Application_Start(). [ retryPolicyis a global static variable in a static class, which also includes the following method.]

Then I have a method

public static ReliableSqlConnection GetReliableConnection()
{
    var conn = new ReliableSqlConnection("Server=...,1433;Database=...;User ID=...;Password=...;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;", retryPolicy);

    conn.Open();

    return conn;
}

Then i use this method

using (var conn = GetReliableConnection())
using (var cmd = conn.CreateCommand())
{
    cmd.CommandText = "SELECT COUNT(*) FROM ReliabilityTest";

    result = (int) cmd.ExecuteScalarWithRetry();

    return View(result);
}

While this is working. Then, to check the retry policy, I tried to use the wrong username (suggestion here ).

But when I go through this code, the cursor immediately jumps to my expression catchwith

"[ ]".

, , .

, Entity Framework, , .

? ?

+4
1

. - /, , . -: http://msdn.microsoft.com/en-us/library/dn440719%28v=pandp.60%29.aspx:

?

, - , , , ; , . ( , ) . . , .

(http://topaz.codeplex.com/) , , SQL, , , .

.

UPDATE

: http://topaz.codeplex.com/SourceControl/latest#source/Source/TransientFaultHandling.Data/SqlDatabaseTransientErrorDetectionStrategy.cs. . ( CustomSqlDatabaseTransientErrorDetectionStrategy) ). login failed SqlDatabaseTransientErrorDetectionStrategy.

+11

Source: https://habr.com/ru/post/1570141/


All Articles