Skip to content

Commit

Permalink
Remove AsyncCausalityTracer by logging into TplEventSource directly (#…
Browse files Browse the repository at this point in the history
…38313)

* Add AsyncCausalityTracer

* cleanup

* Handle multiple sessions

* CR feedback

* Remove AsyncCausalityTracer and replace it with direct calls to TplEventSource
  • Loading branch information
sywhang authored Jun 30, 2020
1 parent 1ea4166 commit 6710743
Show file tree
Hide file tree
Showing 9 changed files with 98 additions and 153 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1599,9 +1599,6 @@
<Compile Include="$(MSBuildThisFileDirectory)System\Threading\TimerQueue.Windows.cs" />
<Compile Include="$(MSBuildThisFileDirectory)System\TimeZoneInfo.Win32.cs" />
</ItemGroup>
<ItemGroup Condition="'$(FeatureAsyncCausalityTracer)' != 'true'">
<Compile Include="$(MSBuildThisFileDirectory)System\Threading\Tasks\AsyncCausalityTracer.Noop.cs" />
</ItemGroup>
<ItemGroup Condition="'$(FeatureComWrappers)' != 'true'">
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\InteropServices\ComWrappers.PlatformNotSupported.cs" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -229,9 +229,9 @@ private static IAsyncStateMachineBox GetStateMachineBox<TStateMachine>(
box.Context = currentContext;

// Log the creation of the state machine box object / task for this async method.
if (AsyncCausalityTracer.LoggingOn)
if (TplEventSource.Log.IsEnabled())
{
AsyncCausalityTracer.TraceOperationCreation(box, "Async: " + stateMachine.GetType().Name);
TplEventSource.Log.TraceOperationBegin(box.Id, "Async: " + stateMachine.GetType().Name, 0);
}

// And if async debugging is enabled, track the task.
Expand Down Expand Up @@ -310,10 +310,10 @@ private void MoveNext(Thread? threadPoolThread)
{
Debug.Assert(!IsCompleted);

bool loggingOn = AsyncCausalityTracer.LoggingOn;
bool loggingOn = TplEventSource.Log.IsEnabled();
if (loggingOn)
{
AsyncCausalityTracer.TraceSynchronousWorkStart(this, CausalitySynchronousWork.Execution);
TplEventSource.Log.TraceSynchronousWorkBegin(this.Id, CausalitySynchronousWork.Execution);
}

ExecutionContext? context = Context;
Expand Down Expand Up @@ -361,7 +361,7 @@ private void MoveNext(Thread? threadPoolThread)

if (loggingOn)
{
AsyncCausalityTracer.TraceSynchronousWorkCompletion(CausalitySynchronousWork.Execution);
TplEventSource.Log.TraceSynchronousWorkEnd(CausalitySynchronousWork.Execution);
}
}

Expand Down Expand Up @@ -433,9 +433,9 @@ internal static void SetExistingTaskResult(Task<TResult> task, [AllowNull] TResu
{
Debug.Assert(task != null, "Expected non-null task");

if (AsyncCausalityTracer.LoggingOn)
if (TplEventSource.Log.IsEnabled())
{
AsyncCausalityTracer.TraceOperationCompletion(task, AsyncCausalityStatus.Completed);
TplEventSource.Log.TraceOperationEnd(task.Id, AsyncCausalityStatus.Completed);
}

if (!task.TrySetResult(result))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,9 @@ public void AwaitUnsafeOnCompleted<TAwaiter, TStateMachine>(
/// <summary>Completes the method builder successfully.</summary>
public void SetResult()
{
if (AsyncCausalityTracer.LoggingOn)
if (TplEventSource.Log.IsEnabled())
{
AsyncCausalityTracer.TraceOperationCompletion(this.Task, AsyncCausalityStatus.Completed);
TplEventSource.Log.TraceOperationEnd(this.Task.Id, AsyncCausalityStatus.Completed);
}

// Mark the builder as completed. As this is a void-returning method, this mostly
Expand All @@ -102,9 +102,9 @@ public void SetException(Exception exception)
ThrowHelper.ThrowArgumentNullException(ExceptionArgument.exception);
}

if (AsyncCausalityTracer.LoggingOn)
if (TplEventSource.Log.IsEnabled())
{
AsyncCausalityTracer.TraceOperationCompletion(this.Task, AsyncCausalityStatus.Error);
TplEventSource.Log.TraceOperationEnd(this.Task.Id, AsyncCausalityStatus.Error);
}

if (_synchronizationContext != null)
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -527,8 +527,8 @@ private static void FromAsyncCoreLogic(
}
else
{
if (AsyncCausalityTracer.LoggingOn)
AsyncCausalityTracer.TraceOperationCompletion(promise, AsyncCausalityStatus.Completed);
if (TplEventSource.Log.IsEnabled())
TplEventSource.Log.TraceOperationEnd(promise.Id, AsyncCausalityStatus.Completed);

if (Task.s_asyncDebuggingEnabled)
Task.RemoveFromActiveTasks(promise);
Expand Down Expand Up @@ -649,8 +649,8 @@ internal static Task<TResult> FromAsyncImpl(

Task<TResult> promise = new Task<TResult>((object?)null, creationOptions);

if (AsyncCausalityTracer.LoggingOn)
AsyncCausalityTracer.TraceOperationCreation(promise, "TaskFactory.FromAsync");
if (TplEventSource.Log.IsEnabled())
TplEventSource.Log.TraceOperationBegin(promise.Id, "TaskFactory.FromAsync", 0);

if (Task.s_asyncDebuggingEnabled)
Task.AddToActiveTasks(promise);
Expand All @@ -665,8 +665,8 @@ internal static Task<TResult> FromAsyncImpl(
(object?)null, null,
default, TaskCreationOptions.None, InternalTaskOptions.None, null);

if (AsyncCausalityTracer.LoggingOn)
AsyncCausalityTracer.TraceOperationCreation(t, "TaskFactory.FromAsync Callback");
if (TplEventSource.Log.IsEnabled())
TplEventSource.Log.TraceOperationBegin(t.Id, "TaskFactory.FromAsync Callback", 0);

if (Task.s_asyncDebuggingEnabled)
Task.AddToActiveTasks(t);
Expand Down Expand Up @@ -764,8 +764,8 @@ internal static Task<TResult> FromAsyncImpl(Func<AsyncCallback, object?, IAsyncR

Task<TResult> promise = new Task<TResult>(state, creationOptions);

if (AsyncCausalityTracer.LoggingOn)
AsyncCausalityTracer.TraceOperationCreation(promise, "TaskFactory.FromAsync: " + beginMethod.Method.Name);
if (TplEventSource.Log.IsEnabled())
TplEventSource.Log.TraceOperationBegin(promise.Id, "TaskFactory.FromAsync: " + beginMethod.Method.Name, 0);

if (Task.s_asyncDebuggingEnabled)
Task.AddToActiveTasks(promise);
Expand All @@ -786,8 +786,8 @@ internal static Task<TResult> FromAsyncImpl(Func<AsyncCallback, object?, IAsyncR
}
catch
{
if (AsyncCausalityTracer.LoggingOn)
AsyncCausalityTracer.TraceOperationCompletion(promise, AsyncCausalityStatus.Error);
if (TplEventSource.Log.IsEnabled())
TplEventSource.Log.TraceOperationEnd(promise.Id, AsyncCausalityStatus.Error);

if (Task.s_asyncDebuggingEnabled)
Task.RemoveFromActiveTasks(promise);
Expand Down Expand Up @@ -881,8 +881,8 @@ internal static Task<TResult> FromAsyncImpl<TArg1>(Func<TArg1, AsyncCallback, ob

Task<TResult> promise = new Task<TResult>(state, creationOptions);

if (AsyncCausalityTracer.LoggingOn)
AsyncCausalityTracer.TraceOperationCreation(promise, "TaskFactory.FromAsync: " + beginMethod.Method.Name);
if (TplEventSource.Log.IsEnabled())
TplEventSource.Log.TraceOperationBegin(promise.Id, "TaskFactory.FromAsync: " + beginMethod.Method.Name, 0);

if (Task.s_asyncDebuggingEnabled)
Task.AddToActiveTasks(promise);
Expand All @@ -903,8 +903,8 @@ internal static Task<TResult> FromAsyncImpl<TArg1>(Func<TArg1, AsyncCallback, ob
}
catch
{
if (AsyncCausalityTracer.LoggingOn)
AsyncCausalityTracer.TraceOperationCompletion(promise, AsyncCausalityStatus.Error);
if (TplEventSource.Log.IsEnabled())
TplEventSource.Log.TraceOperationEnd(promise.Id, AsyncCausalityStatus.Error);

if (Task.s_asyncDebuggingEnabled)
Task.RemoveFromActiveTasks(promise);
Expand Down Expand Up @@ -1006,8 +1006,8 @@ internal static Task<TResult> FromAsyncImpl<TArg1, TArg2>(Func<TArg1, TArg2, Asy

Task<TResult> promise = new Task<TResult>(state, creationOptions);

if (AsyncCausalityTracer.LoggingOn)
AsyncCausalityTracer.TraceOperationCreation(promise, "TaskFactory.FromAsync: " + beginMethod.Method.Name);
if (TplEventSource.Log.IsEnabled())
TplEventSource.Log.TraceOperationBegin(promise.Id, "TaskFactory.FromAsync: " + beginMethod.Method.Name, 0);

if (Task.s_asyncDebuggingEnabled)
Task.AddToActiveTasks(promise);
Expand All @@ -1028,8 +1028,8 @@ internal static Task<TResult> FromAsyncImpl<TArg1, TArg2>(Func<TArg1, TArg2, Asy
}
catch
{
if (AsyncCausalityTracer.LoggingOn)
AsyncCausalityTracer.TraceOperationCompletion(promise, AsyncCausalityStatus.Error);
if (TplEventSource.Log.IsEnabled())
TplEventSource.Log.TraceOperationEnd(promise.Id, AsyncCausalityStatus.Error);

if (Task.s_asyncDebuggingEnabled)
Task.RemoveFromActiveTasks(promise);
Expand Down Expand Up @@ -1139,8 +1139,8 @@ internal static Task<TResult> FromAsyncImpl<TArg1, TArg2, TArg3>(Func<TArg1, TAr

Task<TResult> promise = new Task<TResult>(state, creationOptions);

if (AsyncCausalityTracer.LoggingOn)
AsyncCausalityTracer.TraceOperationCreation(promise, "TaskFactory.FromAsync: " + beginMethod.Method.Name);
if (TplEventSource.Log.IsEnabled())
TplEventSource.Log.TraceOperationBegin(promise.Id, "TaskFactory.FromAsync: " + beginMethod.Method.Name, 0);

if (Task.s_asyncDebuggingEnabled)
Task.AddToActiveTasks(promise);
Expand All @@ -1161,8 +1161,8 @@ internal static Task<TResult> FromAsyncImpl<TArg1, TArg2, TArg3>(Func<TArg1, TAr
}
catch
{
if (AsyncCausalityTracer.LoggingOn)
AsyncCausalityTracer.TraceOperationCompletion(promise, AsyncCausalityStatus.Error);
if (TplEventSource.Log.IsEnabled())
TplEventSource.Log.TraceOperationEnd(promise.Id, AsyncCausalityStatus.Error);

if (Task.s_asyncDebuggingEnabled)
Task.RemoveFromActiveTasks(promise);
Expand Down
Loading

0 comments on commit 6710743

Please sign in to comment.