in Core/src/Impl/Commands/DeleteCommand.cs [36:70]
public async Task<int> ExecuteAsync()
{
Volatile.Write(ref mySubOpsCount, 0);
var validator = new StorageManager(myLogger, myStorage);
var storageFormat = await validator.ValidateStorageMarkersAsync();
long deleteTags;
List<TagFileData> tagItems;
{
var (incTagItems, excTagItems) = await validator.LoadTagItemsAsync(myDegreeOfParallelism, myIdentityFilter, mySafetyPeriod, false);
validator.DumpProducts(incTagItems);
validator.DumpProperties(incTagItems);
deleteTags = incTagItems.Count;
myLogger.Info($"[{DateTime.Now:s}] Deleting tag files...");
await incTagItems.ParallelForAsync(myDegreeOfParallelism, async tagItem =>
{
var file = tagItem.TagFile;
myLogger.Info($" Deleting {file}");
Interlocked.Increment(ref mySubOpsCount);
await myStorage.DeleteAsync(file);
});
tagItems = excTagItems;
}
{
var (files, _) = await validator.GatherDataFilesAsync();
var (statistics, deleted) = await validator.ValidateAndFixAsync(myDegreeOfParallelism, tagItems, files, storageFormat, StorageManager.ValidateMode.Delete);
if (deleted > 0)
await myStorage.InvalidateExternalServicesAsync();
myLogger.Info($"[{DateTime.Now:s}] Done (deleted tag files: {deleteTags}, deleted data files: {deleted}, warnings: {statistics.Warnings}, errors: {statistics.Errors}, fixes: {statistics.Fixes})");
return statistics.HasProblems ? 1 : 0;
}
}