Microsoft Transient Fault Handling Application Block ("Topaz") - August 2012 Update

Release Notes

v..5.0.1208.2
We removed the hard dependency on the Windows Azure Shared Caching core assembly (Microsoft.ApplicationServer.Caching.Core, Version=101.0.0.0). This was causing build/deployment issues for users who wanted to use the Windows Azure Caching Preview (Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0) even when not using Topaz to handle transient faults accessing the Caching service, as the preview is not yet supported by Topaz.

Release Notes

v..5.0.1208.0 and v.5.0.1208.1

In this August wave of updates we are releasing two service updates to Topaz – the Transient Fault Handling Application Block v.5.0.1208.0 and v.5.0.1208.1 targeting the Windows Azure SDK for .NET 1.6 Nov 2011 and 1.7 June 2012 respectively.

Notes

  • Topaz v.5.0.1208.1 and later will only support the Windows Azure SDK 1.7 June 2012 client libraries.
  • To make the update experience as simple as possible for users and to avoid the need for assembly binding redirects, we chose to only increment the assembly file and NuGet package versions, not the .NET assembly version. The assembly version is still 5.0.1118.0.

What’s New

The updates include fixes to the following:
  • Service Bus transient error detection strategy:
    1. Critical bug fix: The previous version of Topaz incorrectly treated every WebException (many of which are wrapped in higher level exceptions) as transient and retried them. Now WebExceptions are only treated as transient if they contain a status code of InternalServerError, GatewayTimeout, ServiceUnavailable, or RequestTimeout.
    2. Edge case fix: The block treats UnauthorizedAccessException only with a specific status code (HttpStatusCode.Unauthorized) as transient.
  • Azure Storage transient error detection strategy:
    1. High impact bug fix: When a WebException with a protocol error occurred, Topaz treated it as transient, which was causing some non-transient exceptions to be treated as transient (for example, a NotFound HTTP status). Now WebExceptions are only treated as transient if they contain a status code of InternalServerError, GatewayTimeout, ServiceUnavailable, RequestTimeout. The issue reported here is now fixed.
    2. Edge case fix: In addition to the previously handled codes for the DataServiceRequestException, StorageServerException, and StorageClientException, the block now treats the following codes as transient also: TableErrorCodeStrings.TableServerOutOfMemory or TableErrorCodeStrings.TableBeingDeleted
    3. Edge case fix: The block treats IOException as transient. IOExceptions could manifest themselves under extremely high load ("Unable to read data from the transport connection: The connection was closed").

Installation instructions

To update to the version 5.0.1208.1 targeting SDK1.7, follow the usual way of updating a package either via the UI or via the Package Manager console.

To update to the version 5.0.1208.0 targeting SDK1.6, the Package Manager UI cannot be used (since it only allows updating to the latest version). Follow these steps:
  1. Open the Package Manager Console (Tools menu, select Library Package Manager and then click Package Manager Console).
  2. For each of the projects you want to install/update the block:
    1. select the project in the Default Project dropdown box
    2. run one of the following commands:
Install-Package EnterpriseLibrary.WindowsAzure.TransientFaultHandling -Version 5.0.1208.0
Update-Package EnterpriseLibrary.WindowsAzure.TransientFaultHandling -Version 5.0.1208.0

Last edited Aug 29, 2012 at 10:37 PM by gmelnik, version 9

Comments

No comments yet.