in Source/NuGetGallery.Operations/Tasks/DeleteBrokenPackageBackupsTask.cs [13:55]
public override void ExecuteCommand()
{
var blobClient = CreateBlobClient();
var storageName = StorageAccountName;
Log.Trace("Getting all broken package backup files on storage account '{0}'.", storageName);
var packageBackupsBlobContainer = Util.GetPackageBackupsBlobContainer(blobClient);
var blobItems = GetPackageBackupBlobItems().ToList();
var blobDirectories = blobItems
.Select(bi => bi as CloudBlobDirectory)
.Where(directory => directory != null)
.ToList();
var totalCount = blobDirectories.Count;
var processedCount = 0;
Log.Trace(
"Deleting {0} broken package backup files (out of {1} total blob items) on storage account '{2}'.",
totalCount,
blobItems.Count,
storageName);
Parallel.ForEach(blobDirectories, blobDirectory =>
{
try
{
if (!WhatIf)
{
DeleteBlobDirectory(blobDirectory);
}
Interlocked.Increment(ref processedCount);
Log.Info(string.Format("Deleted broken package backup root directory '{0}' ({1} of {2}).", blobDirectory.Uri.Segments.Last(), processedCount, totalCount));
}
catch(Exception ex)
{
Interlocked.Increment(ref processedCount);
Log.Error(
"Error deleting broken package backup root directory '{0}': {1} ({2} of {3}).",
blobDirectory.Uri.Segments.Last(), processedCount, totalCount, ex.Message);
}
});
}