Im really new to Windows Azure development and have a requirement to store some data in a windows azure storage table.
This table will really only exist to provide a qu
From MSDN: "Note that deleting a table is likely to take at least 40 seconds to complete. If an operation is attempted against the table while it was being deleted, the service returns status code 409 (Conflict), with additional error information indicating that the table is being deleted."
The only way to deal with this is to create a table with a different name. This could be as simple as appending a timestamp or GUID to your name. Just be careful to clean up your garbage.
If you need to use the same table name you can use an extension method:
public static class StorageExtensions
{
public static bool SafeCreateIfNotExists(this CloudTable table, TableRequestOptions requestOptions = null, OperationContext operationContext = null)
{
do
{
try
{
return table.CreateIfNotExists(requestOptions, operationContext);
}
catch (StorageException e)
{
if ((e.RequestInformation.HttpStatusCode == 409) && (e.RequestInformation.ExtendedErrorInformation.ErrorCode.Equals(TableErrorCodeStrings.TableBeingDeleted)))
Thread.Sleep(1000);// The table is currently being deleted. Try again until it works.
else
throw;
}
} while (true);
}
}
WARNING! Be careful when you use this approach, because it blocks the thread. And it can go to the dead loop if third-party service (Azure) keeps generating these errors. The reason for this could be table locking, subscription expiration, service unavailability, etc.