/// <inheritdoc /> public Task <StructResult <long> > RemoveFromTrackerAsync(Context context) { return(RemoveFromTrackerCall <ContentStoreTracer> .RunAsync(Tracer, new OperationContext(context), async() => { var removeTaskByStore = new Dictionary <string, Task <StructResult <long> > >(); var store1 = ContentStore1 as IRepairStore; if (store1 != null) { removeTaskByStore.Add(NameOfContentStore1, store1.RemoveFromTrackerAsync(context)); } else { Tracer.Debug(context, $"Repair handling not enabled for {NameOfContentStore1}."); } var store2 = ContentStore2 as IRepairStore; if (store2 != null) { removeTaskByStore.Add(NameOfContentStore2, store2.RemoveFromTrackerAsync(context)); } else { Tracer.Debug(context, $"Repair handling not enabled for {NameOfContentStore2}."); } await Task.WhenAll(removeTaskByStore.Values); var sb = new StringBuilder(); long filesTrimmed = 0; foreach (var kvp in removeTaskByStore) { var removeTrackerResult = await kvp.Value; if (removeTrackerResult.Succeeded) { filesTrimmed += removeTrackerResult.Data; } else { sb.Concat($"{kvp.Key} repair handling failed, error=[{removeTrackerResult}]", "; "); } } if (sb.Length > 0) { return new StructResult <long>(sb.ToString()); } else { return new StructResult <long>(filesTrimmed); } })); }
/// <inheritdoc /> public Task <StructResult <long> > RemoveFromTrackerAsync(Context context) { return(RemoveFromTrackerCall <ContentStoreTracer> .RunAsync(_tracer, OperationContext(context), async() => { if (_trimBulkAsync == null) { return new StructResult <long>("Repair handling not enabled."); } var contentHashes = await Store.EnumerateContentHashesAsync(); return await _trimBulkAsync(context, contentHashes, CancellationToken.None, UrgencyHint.Nominal); })); }
/// <inheritdoc /> public Task <StructResult <long> > RemoveFromTrackerAsync(Context context) { return(RemoveFromTrackerCall <ContentStoreTracer> .RunAsync(Tracer, new OperationContext(context), async() => { var removeTaskByStore = new Dictionary <string, Task <StructResult <long> > >(); foreach (var kvp in _drivesWithContentStore) { if (kvp.Value is IRepairStore store) { removeTaskByStore.Add(kvp.Key, store.RemoveFromTrackerAsync(context)); } } await Task.WhenAll(removeTaskByStore.Values); var sb = new StringBuilder(); long filesTrimmed = 0; foreach (var kvp in removeTaskByStore) { var removeFromTrackerResult = await kvp.Value; if (removeFromTrackerResult.Succeeded) { filesTrimmed += removeFromTrackerResult.Data; } else { sb.Concat($"{kvp.Key} repair handling failed, error=[{removeFromTrackerResult}]", "; "); } } if (sb.Length > 0) { return new StructResult <long>(sb.ToString()); } else { return new StructResult <long>(filesTrimmed); } }));