Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove IsTopLevelOperation and ITracingIdentifier #1166

Merged
merged 1 commit into from
Jul 12, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
36 changes: 14 additions & 22 deletions src/Autofac/Core/Diagnostics/DefaultDiagnosticTracer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class DefaultDiagnosticTracer : FullOperationDiagnosticTracerBase
{
private const string RequestExceptionTraced = "__RequestException";

private readonly ConcurrentDictionary<ITracingIdentifer, IndentingStringBuilder> _operationBuilders = new ConcurrentDictionary<ITracingIdentifer, IndentingStringBuilder>();
private readonly ConcurrentDictionary<ResolveOperationBase, IndentingStringBuilder> _operationBuilders = new ConcurrentDictionary<ResolveOperationBase, IndentingStringBuilder>();

private static readonly string[] NewLineSplit = new[] { Environment.NewLine };

Expand Down Expand Up @@ -52,7 +52,7 @@ public override void OnOperationStart(OperationStartDiagnosticData data)
return;
}

var builder = _operationBuilders.GetOrAdd(data.Operation.TracingId, k => new IndentingStringBuilder());
var builder = _operationBuilders.GetOrAdd(data.Operation, k => new IndentingStringBuilder());

builder.AppendFormattedLine(TracerMessages.ResolveOperationStarting);
builder.AppendLine(TracerMessages.EntryBrace);
Expand All @@ -67,7 +67,7 @@ public override void OnRequestStart(RequestDiagnosticData data)
return;
}

if (_operationBuilders.TryGetValue(data.Operation.TracingId, out var builder))
if (_operationBuilders.TryGetValue(data.Operation, out var builder))
{
builder.AppendFormattedLine(TracerMessages.ResolveRequestStarting);
builder.AppendLine(TracerMessages.EntryBrace);
Expand All @@ -93,7 +93,7 @@ public override void OnMiddlewareStart(MiddlewareDiagnosticData data)
return;
}

if (_operationBuilders.TryGetValue(data.RequestContext.Operation.TracingId, out var builder))
if (_operationBuilders.TryGetValue(data.RequestContext.Operation, out var builder))
{
builder.AppendFormattedLine(TracerMessages.EnterMiddleware, data.Middleware.ToString());
builder.Indent();
Expand All @@ -108,7 +108,7 @@ public override void OnMiddlewareFailure(MiddlewareDiagnosticData data)
return;
}

if (_operationBuilders.TryGetValue(data.RequestContext.Operation.TracingId, out var builder))
if (_operationBuilders.TryGetValue(data.RequestContext.Operation, out var builder))
{
builder.Outdent();
builder.AppendFormattedLine(TracerMessages.ExitMiddlewareFailure, data.Middleware.ToString());
Expand All @@ -123,7 +123,7 @@ public override void OnMiddlewareSuccess(MiddlewareDiagnosticData data)
return;
}

if (_operationBuilders.TryGetValue(data.RequestContext.Operation.TracingId, out var builder))
if (_operationBuilders.TryGetValue(data.RequestContext.Operation, out var builder))
{
builder.Outdent();
builder.AppendFormattedLine(TracerMessages.ExitMiddlewareSuccess, data.Middleware.ToString());
Expand All @@ -138,7 +138,7 @@ public override void OnRequestFailure(RequestFailureDiagnosticData data)
return;
}

if (_operationBuilders.TryGetValue(data.Operation.TracingId, out var builder))
if (_operationBuilders.TryGetValue(data.Operation, out var builder))
{
builder.Outdent();
builder.AppendLine(TracerMessages.ExitBrace);
Expand Down Expand Up @@ -170,7 +170,7 @@ public override void OnRequestSuccess(RequestDiagnosticData data)
return;
}

if (_operationBuilders.TryGetValue(data.Operation.TracingId, out var builder))
if (_operationBuilders.TryGetValue(data.Operation, out var builder))
{
builder.Outdent();
builder.AppendLine(TracerMessages.ExitBrace);
Expand All @@ -186,23 +186,19 @@ public override void OnOperationFailure(OperationFailureDiagnosticData data)
return;
}

if (_operationBuilders.TryGetValue(data.Operation.TracingId, out var builder))
if (_operationBuilders.TryGetValue(data.Operation, out var builder))
{
try
{
builder.Outdent();
builder.AppendLine(TracerMessages.ExitBrace);
builder.AppendException(TracerMessages.OperationFailed, data.OperationException);

// If we're completing the root operation, raise the event.
if (data.Operation.IsTopLevelOperation)
{
OnOperationCompleted(new OperationTraceCompletedArgs(data.Operation, builder.ToString()));
}
OnOperationCompleted(new OperationTraceCompletedArgs(data.Operation, builder.ToString()));
}
finally
{
_operationBuilders.TryRemove(data.Operation.TracingId, out var _);
_operationBuilders.TryRemove(data.Operation, out var _);
}
}
}
Expand All @@ -215,23 +211,19 @@ public override void OnOperationSuccess(OperationSuccessDiagnosticData data)
return;
}

if (_operationBuilders.TryGetValue(data.Operation.TracingId, out var builder))
if (_operationBuilders.TryGetValue(data.Operation, out var builder))
{
try
{
builder.Outdent();
builder.AppendLine(TracerMessages.ExitBrace);
builder.AppendFormattedLine(TracerMessages.OperationSucceeded, data.ResolvedInstance);

// If we're completing the root operation, raise the event.
if (data.Operation.IsTopLevelOperation)
{
OnOperationCompleted(new OperationTraceCompletedArgs(data.Operation, builder.ToString()));
}
OnOperationCompleted(new OperationTraceCompletedArgs(data.Operation, builder.ToString()));
}
finally
{
_operationBuilders.TryRemove(data.Operation.TracingId, out var _);
_operationBuilders.TryRemove(data.Operation, out var _);
}
}
}
Expand Down
14 changes: 1 addition & 13 deletions src/Autofac/Core/Diagnostics/DiagnosticSourceExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// This software is part of the Autofac IoC container
// This software is part of the Autofac IoC container
// Copyright © 2020 Autofac Contributors
// https://autofac.org
//
Expand Down Expand Up @@ -104,10 +104,6 @@ public static bool OperationDiagnosticsEnabled(this DiagnosticSource diagnosticS
/// <param name="diagnosticSource">The diagnostic source to which events will be written.</param>
/// <param name="operation">The pipeline resolve operation that is about to run.</param>
/// <param name="initiatingRequest">The request that is responsible for starting this operation.</param>
/// <remarks>
/// A single operation can in turn invoke other full operations (as opposed to requests). Check <see cref="ResolveOperationBase.IsTopLevelOperation"/>
/// to know if you're looking at the entry operation.
/// </remarks>
public static void OperationStart(this DiagnosticSource diagnosticSource, ResolveOperationBase operation, ResolveRequest initiatingRequest)
{
if (diagnosticSource.IsEnabled(DiagnosticEventKeys.OperationStart))
Expand All @@ -122,10 +118,6 @@ public static void OperationStart(this DiagnosticSource diagnosticSource, Resolv
/// <param name="diagnosticSource">The diagnostic source to which events will be written.</param>
/// <param name="operation">The resolve operation that failed.</param>
/// <param name="operationException">The exception that caused the operation failure.</param>
/// <remarks>
/// A single operation can in turn invoke other full operations (as opposed to requests). Check <see cref="ResolveOperationBase.IsTopLevelOperation"/>
/// to know if you're looking at the entry operation.
/// </remarks>
public static void OperationFailure(this DiagnosticSource diagnosticSource, ResolveOperationBase operation, Exception operationException)
{
if (diagnosticSource.IsEnabled(DiagnosticEventKeys.OperationFailure))
Expand All @@ -140,10 +132,6 @@ public static void OperationFailure(this DiagnosticSource diagnosticSource, Reso
/// <param name="diagnosticSource">The diagnostic source to which events will be written.</param>
/// <param name="operation">The resolve operation that succeeded.</param>
/// <param name="resolvedInstance">The resolved instance providing the requested service.</param>
/// <remarks>
/// A single operation can in turn invoke other full operations (as opposed to requests). Check <see cref="ResolveOperationBase.IsTopLevelOperation"/>
/// to know if you're looking at the entry operation.
/// </remarks>
public static void OperationSuccess(this DiagnosticSource diagnosticSource, ResolveOperationBase operation, object resolvedInstance)
{
if (diagnosticSource.IsEnabled(DiagnosticEventKeys.OperationSuccess))
Expand Down
38 changes: 15 additions & 23 deletions src/Autofac/Core/Diagnostics/DotDiagnosticTracer.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Globalization;
Expand All @@ -24,7 +24,7 @@ public class DotDiagnosticTracer : FullOperationDiagnosticTracerBase
{
private const string RequestExceptionTraced = "__RequestException";

private readonly ConcurrentDictionary<ITracingIdentifer, DotGraphBuilder> _operationBuilders = new ConcurrentDictionary<ITracingIdentifer, DotGraphBuilder>();
private readonly ConcurrentDictionary<ResolveOperationBase, DotGraphBuilder> _operationBuilders = new ConcurrentDictionary<ResolveOperationBase, DotGraphBuilder>();

/// <summary>
/// Initializes a new instance of the <see cref="DotDiagnosticTracer"/> class.
Expand All @@ -51,7 +51,7 @@ public override void OnOperationStart(OperationStartDiagnosticData data)
return;
}

var builder = _operationBuilders.GetOrAdd(data.Operation.TracingId, k => new DotGraphBuilder());
var builder = _operationBuilders.GetOrAdd(data.Operation, k => new DotGraphBuilder());
}

/// <inheritdoc/>
Expand All @@ -62,7 +62,7 @@ public override void OnRequestStart(RequestDiagnosticData data)
return;
}

if (_operationBuilders.TryGetValue(data.Operation.TracingId, out var builder))
if (_operationBuilders.TryGetValue(data.Operation, out var builder))
{
builder.OnRequestStart(
data.RequestContext.Service.ToString(),
Expand All @@ -79,7 +79,7 @@ public override void OnMiddlewareStart(MiddlewareDiagnosticData data)
return;
}

if (_operationBuilders.TryGetValue(data.RequestContext.Operation.TracingId, out var builder))
if (_operationBuilders.TryGetValue(data.RequestContext.Operation, out var builder))
{
builder.OnMiddlewareStart(data.Middleware.ToString());
}
Expand All @@ -93,7 +93,7 @@ public override void OnMiddlewareFailure(MiddlewareDiagnosticData data)
return;
}

if (_operationBuilders.TryGetValue(data.RequestContext.Operation.TracingId, out var builder))
if (_operationBuilders.TryGetValue(data.RequestContext.Operation, out var builder))
{
builder.OnMiddlewareFailure();
}
Expand All @@ -107,7 +107,7 @@ public override void OnMiddlewareSuccess(MiddlewareDiagnosticData data)
return;
}

if (_operationBuilders.TryGetValue(data.RequestContext.Operation.TracingId, out var builder))
if (_operationBuilders.TryGetValue(data.RequestContext.Operation, out var builder))
{
builder.OnMiddlewareSuccess();
}
Expand All @@ -121,7 +121,7 @@ public override void OnRequestFailure(RequestFailureDiagnosticData data)
return;
}

if (_operationBuilders.TryGetValue(data.Operation.TracingId, out var builder))
if (_operationBuilders.TryGetValue(data.Operation, out var builder))
{
var requestException = data.RequestException;
if (requestException is DependencyResolutionException && requestException.InnerException is object)
Expand Down Expand Up @@ -150,7 +150,7 @@ public override void OnRequestSuccess(RequestDiagnosticData data)
return;
}

if (_operationBuilders.TryGetValue(data.Operation.TracingId, out var builder))
if (_operationBuilders.TryGetValue(data.Operation, out var builder))
{
builder.OnRequestSuccess(data.RequestContext.Instance?.GetType().ToString());
}
Expand All @@ -164,21 +164,17 @@ public override void OnOperationFailure(OperationFailureDiagnosticData data)
return;
}

if (_operationBuilders.TryGetValue(data.Operation.TracingId, out var builder))
if (_operationBuilders.TryGetValue(data.Operation, out var builder))
{
try
{
builder.OnOperationFailure(data.OperationException);

// If we're completing the root operation, raise the event.
if (data.Operation.IsTopLevelOperation)
{
OnOperationCompleted(new OperationTraceCompletedArgs(data.Operation, builder.ToString()));
}
OnOperationCompleted(new OperationTraceCompletedArgs(data.Operation, builder.ToString()));
}
finally
{
_operationBuilders.TryRemove(data.Operation.TracingId, out var _);
_operationBuilders.TryRemove(data.Operation, out var _);
}
}
}
Expand All @@ -191,21 +187,17 @@ public override void OnOperationSuccess(OperationSuccessDiagnosticData data)
return;
}

if (_operationBuilders.TryGetValue(data.Operation.TracingId, out var builder))
if (_operationBuilders.TryGetValue(data.Operation, out var builder))
{
try
{
builder.OnOperationSuccess(data.ResolvedInstance?.GetType().ToString());

// If we're completing the root operation, raise the event.
if (data.Operation.IsTopLevelOperation)
{
OnOperationCompleted(new OperationTraceCompletedArgs(data.Operation, builder.ToString()));
}
OnOperationCompleted(new OperationTraceCompletedArgs(data.Operation, builder.ToString()));
}
finally
{
_operationBuilders.TryRemove(data.Operation.TracingId, out var _);
_operationBuilders.TryRemove(data.Operation, out var _);
}
}
}
Expand Down
40 changes: 0 additions & 40 deletions src/Autofac/Core/Diagnostics/ITracingIdentifer.cs

This file was deleted.

11 changes: 0 additions & 11 deletions src/Autofac/Core/Resolving/ResolveOperation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,17 +45,6 @@ public ResolveOperation(ISharingLifetimeScope mostNestedLifetimeScope)
{
}

/// <summary>
/// Initializes a new instance of the <see cref="ResolveOperation"/> class.
/// </summary>
/// <param name="mostNestedLifetimeScope">The most nested scope in which to begin the operation. The operation
/// can move upward to less nested scopes as components with wider sharing scopes are activated.</param>
/// <param name="parentOperation">A parent resolve operation, used to maintain tracing between related operations.</param>
public ResolveOperation(ISharingLifetimeScope mostNestedLifetimeScope, ResolveOperationBase parentOperation)
: base(mostNestedLifetimeScope, parentOperation)
{
}

/// <summary>
/// Execute the complete resolve operation.
/// </summary>
Expand Down