예제 #1
0
        public void PinBulkStop(
            Context context,
            TimeSpan duration,
            IReadOnlyList <ContentHash> contentHashes,
            IEnumerable <Indexed <PinResult> > results,
            Exception error,
            PinBulkOptions pinBulkOptions)
        {
            if (context.IsEnabled)
            {
                const string Success = "Success", Error = "Error", Canceled = "Canceled";
                var          pinStatus = error == null ? Success : (error.IsPinContextObjectDisposedException() ? Canceled : Error);

                int count = contentHashes.Count;

                if (pinStatus == Success)
                {
                    // Trace successful case differently when the pins were restored at startup by reading hibernated sessions.
                    if (pinBulkOptions.RePinFromHibernation)
                    {
                        TracerOperationFinished(context, BoolResult.Success, $"{Name}.{PinBulkCallName}() stop by {duration.TotalMilliseconds}ms for {count} hash(es). FromHibernation=True.");
                    }
                    else
                    {
                        // Regular successful case
                        TraceBulk(
                            $"{Name}.{PinBulkCallName}() stop by {duration.TotalMilliseconds}ms for {count} hash(es). Result={pinStatus}. ",
                            results.Select((result, index) => (result, hash: contentHashes[index])),
                            contentHashes.Count,
                            itemPrinter: tpl => $"{tpl.hash.ToShortString()}={tpl.result.Item}",
                            printAction: message => Debug(context, message));
                    }
                }
                else if (pinStatus == Error)
                {
                    // An actual failure case.
                    this.Error(context, $"{Name}.{PinBulkCallName}() stop by {duration.TotalMilliseconds}ms for {count} hash(es). Error={error}");

                    TraceBulk(
                        $"{Name}.{PinBulkCallName}() failed for hashes",
                        results.Select((result, index) => (result, hash: contentHashes[index])),
                        contentHashes.Count,
                        itemPrinter: tpl => $"{tpl.hash.ToShortString()}={tpl.result.Item}",
                        printAction: message => Debug(context, message));
                }

                // Don't have to print anything special for Canceled case. General message should be enough.
            }

            _pinBulkCallCounter.Completed(duration.Ticks);
        }
예제 #2
0
 public Task <IEnumerable <Indexed <PinResult> > > PinAsync(Context context, IReadOnlyList <ContentHash> contentHashes, PinContext pinContext, PinBulkOptions options)
 {
     throw new NotImplementedException();
 }