Skip to content

Commit f128a89

Browse files
authored
Refined diagnostic events (#335)
1 parent eff0415 commit f128a89

File tree

3 files changed

+74
-67
lines changed

3 files changed

+74
-67
lines changed

src/Core.Tests/Execution/DiagnosticTests.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,28 +79,33 @@ private class TestDiagnosticListener
7979

8080
public bool QueryStop { get; private set; }
8181

82+
[DiagnosticName("Resolver")]
83+
public virtual void OnResolvField() { }
8284

83-
[DiagnosticName("HotChocolate.Execution.Resolver.Start")]
85+
[DiagnosticName("Resolver.Start")]
8486
public virtual void OnResolveFieldStart()
8587
{
8688
ResolveFieldStart = true;
8789
}
8890

89-
[DiagnosticName("HotChocolate.Execution.Resolver.Stop")]
91+
[DiagnosticName("Resolver.Stop")]
9092
public virtual void OnResolveFieldStop(IResolverContext context)
9193
{
9294
ResolveFieldStop = true;
9395
FieldSelection = context.FieldSelection;
9496
Duration = Activity.Current.Duration;
9597
}
9698

97-
[DiagnosticName("HotChocolate.Execution.Query.Start")]
99+
[DiagnosticName("Query")]
100+
public virtual void OnQuery() { }
101+
102+
[DiagnosticName("Query.Start")]
98103
public virtual void OnQueryStart()
99104
{
100105
QueryStart = true;
101106
}
102107

103-
[DiagnosticName("HotChocolate.Execution.Query.Stop")]
108+
[DiagnosticName("Query.Stop")]
104109
public virtual void OnQueryStop(IResolverContext context)
105110
{
106111
QueryStop = true;

src/Core/Execution/Utilities/QueryDiagnosticEvents.cs

Lines changed: 39 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,15 @@
22
using System.Collections.Generic;
33
using System.Diagnostics;
44
using HotChocolate.Language;
5-
using HotChocolate.Resolvers;
65

76
namespace HotChocolate.Execution
87
{
98
internal static class QueryDiagnosticEvents
109
{
1110
private const string _diagnosticListenerName = "HotChocolate.Execution";
12-
private const string _queryActivityName =
13-
_diagnosticListenerName + ".Query";
14-
private const string _queryActivityStartName =
15-
_queryActivityName + ".Start";
16-
private const string _queryActivityStopName =
17-
_queryActivityName + ".Stop";
18-
private const string _queryErrorEventName =
19-
_queryActivityName + ".QueryError";
11+
private const string _queryActivityName = "Query";
12+
private const string _queryErrorEventName = "QueryError";
13+
private const string _validationErrorEventName = "ValidationError";
2014

2115
private static readonly DiagnosticSource _src =
2216
new DiagnosticListener(_diagnosticListenerName);
@@ -25,17 +19,17 @@ public static Activity BeginExecute(
2519
ISchema schema,
2620
QueryRequest request)
2721
{
28-
if (_src.IsEnabled(_queryActivityStartName, schema, request)
29-
|| _src.IsEnabled(_queryActivityStopName, schema, request))
22+
var payload = new
23+
{
24+
Schema = schema,
25+
Request = request
26+
};
27+
28+
if (_src.IsEnabled(_queryActivityName, payload))
3029
{
3130
var activity = new Activity(_queryActivityName);
3231

33-
_src.StartActivity(activity, new
34-
{
35-
Schema = schema,
36-
Request = request,
37-
Timestamp = Stopwatch.GetTimestamp()
38-
});
32+
_src.StartActivity(activity, payload);
3933

4034
return activity;
4135
}
@@ -51,13 +45,17 @@ public static void EndExecute(
5145
{
5246
if (activity != null)
5347
{
54-
_src.StopActivity(activity, new
48+
var payload = new
5549
{
5650
Schema = schema,
5751
Request = request,
58-
Query = query,
59-
Timestamp = Stopwatch.GetTimestamp()
60-
});
52+
Query = query
53+
};
54+
55+
if (_src.IsEnabled(_queryActivityName, payload))
56+
{
57+
_src.StopActivity(activity, payload);
58+
}
6159
}
6260
}
6361

@@ -67,15 +65,17 @@ public static void QueryError(
6765
DocumentNode query,
6866
Exception exception)
6967
{
70-
if (_src.IsEnabled(_queryErrorEventName))
68+
var payload = new
7169
{
72-
_src.Write(_queryErrorEventName, new
73-
{
74-
Schema = schema,
75-
Request = request,
76-
Query = query,
77-
Exception = exception
78-
});
70+
Schema = schema,
71+
Request = request,
72+
Query = query,
73+
Exception = exception
74+
};
75+
76+
if (_src.IsEnabled(_queryErrorEventName, payload))
77+
{
78+
_src.Write(_queryErrorEventName, payload);
7979
}
8080
}
8181

@@ -85,15 +85,17 @@ public static void ValidationError(
8585
DocumentNode query,
8686
IReadOnlyCollection<IQueryError> errors)
8787
{
88-
if (_src.IsEnabled(_queryErrorEventName))
88+
var payload = new
8989
{
90-
_src.Write(_queryErrorEventName, new
91-
{
92-
Schema = schema,
93-
Request = request,
94-
Query = query,
95-
Errors = errors
96-
});
90+
Schema = schema,
91+
Request = request,
92+
Query = query,
93+
Errors = errors
94+
};
95+
96+
if (_src.IsEnabled(_validationErrorEventName, payload))
97+
{
98+
_src.Write(_validationErrorEventName, payload);
9799
}
98100
}
99101
}

src/Core/Execution/Utilities/ResolverDiagnosticEvents.cs

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Diagnostics;
33
using HotChocolate.Resolvers;
44

@@ -7,31 +7,25 @@ namespace HotChocolate.Execution
77
internal static class ResolverDiagnosticEvents
88
{
99
private const string _diagnosticListenerName = "HotChocolate.Execution";
10-
private const string _resolverActivityName =
11-
_diagnosticListenerName + ".Resolver";
12-
private const string _resolverActivityStartName =
13-
_resolverActivityName + ".Start";
14-
private const string _resolverActivityStopName =
15-
_resolverActivityName + ".Stop";
16-
private const string _exceptionEventName =
17-
_resolverActivityName + ".Error";
10+
private const string _resolverActivityName = "Resolver";
11+
private const string _exceptionEventName = "ResolverError";
1812

1913
private static readonly DiagnosticSource _src =
2014
new DiagnosticListener(_diagnosticListenerName);
2115

2216
public static Activity BeginResolveField(
2317
IResolverContext resolverContext)
2418
{
25-
if (_src.IsEnabled(_resolverActivityStartName, resolverContext)
26-
|| _src.IsEnabled(_resolverActivityStopName, resolverContext))
19+
var payload = new
20+
{
21+
Context = resolverContext
22+
};
23+
24+
if (_src.IsEnabled(_resolverActivityName, payload))
2725
{
2826
var activity = new Activity(_resolverActivityName);
2927

30-
_src.StartActivity(activity, new
31-
{
32-
Context = resolverContext,
33-
Timestamp = Stopwatch.GetTimestamp()
34-
});
28+
_src.StartActivity(activity, payload);
3529

3630
return activity;
3731
}
@@ -46,26 +40,32 @@ public static void EndResolveField(
4640
{
4741
if (activity != null)
4842
{
49-
_src.StopActivity(activity, new
43+
var payload = new
5044
{
5145
Context = resolverContext,
52-
Result = resolvedValue,
53-
Timestamp = Stopwatch.GetTimestamp()
54-
});
46+
Result = resolvedValue
47+
};
48+
49+
if (_src.IsEnabled(_resolverActivityName, payload))
50+
{
51+
_src.StopActivity(activity, payload);
52+
}
5553
}
5654
}
5755

5856
public static void ResolverError(
5957
IResolverContext resolverContext,
6058
Exception exception)
6159
{
62-
if (_src.IsEnabled(_exceptionEventName))
60+
var payload = new
6361
{
64-
_src.Write(_exceptionEventName, new
65-
{
66-
Context = resolverContext,
67-
Exception = exception
68-
});
62+
Context = resolverContext,
63+
Exception = exception
64+
};
65+
66+
if (_src.IsEnabled(_exceptionEventName, payload))
67+
{
68+
_src.Write(_exceptionEventName, payload);
6969
}
7070
}
7171
}

0 commit comments

Comments
 (0)