Beispiel #1
0
        /// <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);
            }));
        }
Beispiel #3
0
        /// <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);
                }
            }));