Transient Fault Handling Framework for SQL Azure, Azure Storage Services
September 25, 2011 Leave a comment
SQL Azure databases is a distributed system in which each physical server hosts many databases. This sharing of resources leads to capacity constraints on operation throughput. SQL Azure handles these capacity by throttling operations & closing connections that are using too many resources. SQL Azure also closes connections when it alleviates operational hot spots by switching from a primary SQL Azure database to one of its two backup databases.
One of the cloud development strategy is “Design for Failure” . It’s important that applications using SQL Azure being designed to handle failures appropriately.
There are two kinds of error:
1. Permanent Error: Indicating failure of a part of the system.
2. Transient Error: Existing only a brief time.
Permanent errors may be the indicate the logical problem with the application – and handle transient errors gracefully by retrying the operation that led to the error in hope that it does not recur. A dropped connection should be regarded as transient and application should respond to a dropped connection by opening new connection and retrying the operation.
There remains the problem of distinguishing permanent from transient errors. This can be done by comparing the error returned from a failed operation with known list of transient errors. An application can therefore include a retry mechanism that checks the status of operations and retries any operations that experienced a transient error.
The Windows Azure Appfabric Customer Advisory team has made available on MSDN code gallery the source code & pre-compiled assemblies for Transient Fault Handling Framework for SQL Azure , Azure Storage Services , Azure Appfabric Service Bus & Caching Services.
Download Here: http://code.msdn.microsoft.com/Transient-Fault-Handling-b209151f (C# Code)
- Features of the framework:
- Provides the foundation for building high extensible logic for handling a variety of transient conditions, not limited to SQL Azure.
- Supports a range of pre-defined retry policies (Fixed retry interval, Progessive retry interval)
- Supports seperate retry policy for SQL connections & SQL Commands for adding flexibility.