Skip to content

Commit bc7ab8a

Browse files
authored
Compiler.Diagnostics.Diagnostics.Activity - start with tags, expose activity names (constant strings) (#14954)
* Activity - exposing name, starting after tags are added * surface area updated
1 parent ba6647e commit bc7ab8a

File tree

5 files changed

+39
-16
lines changed

5 files changed

+39
-16
lines changed

src/Compiler/Utilities/Activity.fs

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,18 @@ open System.Diagnostics
77
open System.IO
88
open System.Text
99

10+
module ActivityNames =
11+
[<Literal>]
12+
let FscSourceName = "fsc"
13+
14+
[<Literal>]
15+
let ProfiledSourceName = "fsc_with_env_stats"
16+
17+
let AllRelevantNames = [| FscSourceName; ProfiledSourceName |]
18+
1019
[<RequireQualifiedAccess>]
1120
module internal Activity =
1221

13-
let FscSourceName = "fsc"
14-
1522
module Tags =
1623
let fileName = "fileName"
1724
let project = "project"
@@ -47,9 +54,6 @@ module internal Activity =
4754
module Events =
4855
let cacheHit = "cacheHit"
4956

50-
let private activitySourceName = FscSourceName
51-
let private profiledSourceName = "fsc_with_env_stats"
52-
5357
type System.Diagnostics.Activity with
5458

5559
member this.RootId =
@@ -67,18 +71,18 @@ module internal Activity =
6771

6872
depth this 0
6973

70-
let private activitySource = new ActivitySource(activitySourceName)
74+
let private activitySource = new ActivitySource(ActivityNames.FscSourceName)
7175

7276
let start (name: string) (tags: (string * string) seq) : IDisposable =
73-
let activity = activitySource.StartActivity(name)
77+
let activity = activitySource.CreateActivity(name, ActivityKind.Internal)
7478

7579
match activity with
76-
| null -> ()
80+
| null -> activity
7781
| activity ->
7882
for key, value in tags do
7983
activity.AddTag(key, value) |> ignore
8084

81-
activity
85+
activity.Start()
8286

8387
let startNoTags (name: string) : IDisposable = activitySource.StartActivity(name)
8488

@@ -98,7 +102,7 @@ module internal Activity =
98102

99103
let profilingTags = [| workingSetMB; gc0; gc1; gc2; handles; threads |]
100104

101-
let private profiledSource = new ActivitySource(profiledSourceName)
105+
let private profiledSource = new ActivitySource(ActivityNames.ProfiledSourceName)
102106

103107
let startAndMeasureEnvironmentStats (name: string) : IDisposable = profiledSource.StartActivity(name)
104108

@@ -112,7 +116,7 @@ module internal Activity =
112116

113117
let l =
114118
new ActivityListener(
115-
ShouldListenTo = (fun a -> a.Name = profiledSourceName),
119+
ShouldListenTo = (fun a -> a.Name = ActivityNames.ProfiledSourceName),
116120
Sample = (fun _ -> ActivitySamplingResult.AllData),
117121
ActivityStarted = (fun a -> a.AddTag(gcStatsInnerTag, collectGCStats ()) |> ignore),
118122
ActivityStopped =
@@ -145,7 +149,7 @@ module internal Activity =
145149

146150
let consoleWriterListener =
147151
new ActivityListener(
148-
ShouldListenTo = (fun a -> a.Name = profiledSourceName),
152+
ShouldListenTo = (fun a -> a.Name = ActivityNames.ProfiledSourceName),
149153
Sample = (fun _ -> ActivitySamplingResult.AllData),
150154
ActivityStopped =
151155
(fun a ->
@@ -237,7 +241,7 @@ module internal Activity =
237241

238242
let l =
239243
new ActivityListener(
240-
ShouldListenTo = (fun a -> a.Name = activitySourceName || a.Name = profiledSourceName),
244+
ShouldListenTo = (fun a -> ActivityNames.AllRelevantNames |> Array.contains a.Name),
241245
Sample = (fun _ -> ActivitySamplingResult.AllData),
242246
ActivityStopped = (fun a -> msgQueue.Post(createCsvRow a))
243247
)

src/Compiler/Utilities/Activity.fsi

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,19 @@ open System
77
/// For activities following the dotnet distributed tracing concept
88
/// https://learn.microsoft.com/dotnet/core/diagnostics/distributed-tracing-concepts?source=recommendations
99
[<RequireQualifiedAccess>]
10-
module internal Activity =
10+
module ActivityNames =
11+
[<Literal>]
12+
val FscSourceName: string = "fsc"
13+
14+
[<Literal>]
15+
val ProfiledSourceName: string = "fsc_with_env_stats"
1116

12-
val FscSourceName: string
17+
val AllRelevantNames: string[]
18+
19+
/// For activities following the dotnet distributed tracing concept
20+
/// https://learn.microsoft.com/dotnet/core/diagnostics/distributed-tracing-concepts?source=recommendations
21+
[<RequireQualifiedAccess>]
22+
module internal Activity =
1323

1424
module Tags =
1525
val fileName: string

tests/FSharp.Compiler.ComponentTests/FSharpChecker/CommonWorkflows.fs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,13 @@ open FSharp.Compiler.Text
1111
open FSharp.Compiler.CodeAnalysis
1212

1313
module FcsDiagnostics = FSharp.Compiler.Diagnostics.Activity
14+
module FscActivityNames = FSharp.Compiler.Diagnostics.ActivityNames
1415

1516
let expectCacheHits n =
1617
let events = ResizeArray()
1718
let listener =
1819
new ActivityListener(
19-
ShouldListenTo = (fun s -> s.Name = FcsDiagnostics.FscSourceName),
20+
ShouldListenTo = (fun s -> s.Name = FscActivityNames.FscSourceName),
2021
Sample = (fun _ -> ActivitySamplingResult.AllData),
2122
ActivityStopped = (fun a -> events.AddRange a.Events)
2223
)

tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2326,6 +2326,10 @@ FSharp.Compiler.DependencyManager.ResolvingErrorReport: System.IAsyncResult Begi
23262326
FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void .ctor(System.Object, IntPtr)
23272327
FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void EndInvoke(System.IAsyncResult)
23282328
FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void Invoke(FSharp.Compiler.DependencyManager.ErrorReportType, Int32, System.String)
2329+
FSharp.Compiler.Diagnostics.ActivityNames: System.String FscSourceName
2330+
FSharp.Compiler.Diagnostics.ActivityNames: System.String ProfiledSourceName
2331+
FSharp.Compiler.Diagnostics.ActivityNames: System.String[] AllRelevantNames
2332+
FSharp.Compiler.Diagnostics.ActivityNames: System.String[] get_AllRelevantNames()
23292333
FSharp.Compiler.Diagnostics.CompilerDiagnostics: System.Collections.Generic.IEnumerable`1[System.String] GetSuggestedNames(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Core.Unit], System.String)
23302334
FSharp.Compiler.Diagnostics.CompilerDiagnostics: System.String GetErrorMessage(FSharp.Compiler.Diagnostics.FSharpDiagnosticKind)
23312335
FSharp.Compiler.Diagnostics.FSharpDiagnostic: FSharp.Compiler.Diagnostics.FSharpDiagnostic Create(FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity, System.String, Int32, FSharp.Compiler.Text.Range, Microsoft.FSharp.Core.FSharpOption`1[System.String], Microsoft.FSharp.Core.FSharpOption`1[System.String])

tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2326,6 +2326,10 @@ FSharp.Compiler.DependencyManager.ResolvingErrorReport: System.IAsyncResult Begi
23262326
FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void .ctor(System.Object, IntPtr)
23272327
FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void EndInvoke(System.IAsyncResult)
23282328
FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void Invoke(FSharp.Compiler.DependencyManager.ErrorReportType, Int32, System.String)
2329+
FSharp.Compiler.Diagnostics.ActivityNames: System.String FscSourceName
2330+
FSharp.Compiler.Diagnostics.ActivityNames: System.String ProfiledSourceName
2331+
FSharp.Compiler.Diagnostics.ActivityNames: System.String[] AllRelevantNames
2332+
FSharp.Compiler.Diagnostics.ActivityNames: System.String[] get_AllRelevantNames()
23292333
FSharp.Compiler.Diagnostics.CompilerDiagnostics: System.Collections.Generic.IEnumerable`1[System.String] GetSuggestedNames(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Core.Unit], System.String)
23302334
FSharp.Compiler.Diagnostics.CompilerDiagnostics: System.String GetErrorMessage(FSharp.Compiler.Diagnostics.FSharpDiagnosticKind)
23312335
FSharp.Compiler.Diagnostics.FSharpDiagnostic: FSharp.Compiler.Diagnostics.FSharpDiagnostic Create(FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity, System.String, Int32, FSharp.Compiler.Text.Range, Microsoft.FSharp.Core.FSharpOption`1[System.String], Microsoft.FSharp.Core.FSharpOption`1[System.String])

0 commit comments

Comments
 (0)