/// <summary>
 /// Puts the lease on the given blob in a broken state due to a break period of zero.
 /// </summary>
 /// <param name="blob">The blob with the lease.</param>
 /// <returns>The lease ID of the broken lease.</returns>
 internal static string SetInstantBrokenState(CloudBlob blob)
 {
     string leaseId = SetLeasedState(blob, null /* infinite lease */);
     blob.BreakLease(TimeSpan.Zero);
     return leaseId;
 }
 /// <summary>
 /// Puts the lease on the given blob in a breaking state for 60 seconds.
 /// </summary>
 /// <param name="blob">The blob with the lease.</param>
 /// <returns>The lease ID of the current (but breaking) lease.</returns>
 internal static string SetBreakingState(CloudBlob blob)
 {
     string leaseId = SetLeasedState(blob, null /* infinite lease */);
     blob.BreakLease(TimeSpan.FromSeconds(60));
     return leaseId;
 }
 /// <summary>
 /// Puts the lease on the given blob in a broken state due to the break period expiring.
 /// </summary>
 /// <param name="blob">The blob with the lease.</param>
 /// <returns>The lease ID of the broken lease.</returns>
 internal static string SetTimeBrokenState(CloudBlob blob)
 {
     string leaseId = SetLeasedState(blob, null /* infinite lease */);
     blob.BreakLease(TimeSpan.FromSeconds(1));
     Thread.Sleep(TimeSpan.FromSeconds(2));
     return leaseId;
 }
        /// <summary>
        /// Puts the lease on the given blob in an available state.
        /// </summary>
        /// <param name="blob">The blob with the lease.</param>
        internal static void SetAvailableState(CloudBlob blob)
        {
            bool shouldBreakFirst = false;

            try
            {
                blob.DeleteIfExists();
            }
            catch (StorageException exception)
            {
                if (exception.RequestInformation.ExtendedErrorInformation.ErrorCode == BlobErrorCodeStrings.LeaseIdMissing)
                {
                    shouldBreakFirst = true;
                }
                else
                {
                    throw;
                }
            }

            if (shouldBreakFirst)
            {
                blob.BreakLease(TimeSpan.Zero);
                blob.Delete();
            }

            CreateBlob(blob);
        }