Skip to content

Commit 057a110

Browse files
committed
* Remove references to OpenTelemetry
* Move activities to BackgroundChecker layer, deduplicate
1 parent 57ca46b commit 057a110

File tree

5 files changed

+21
-84
lines changed

5 files changed

+21
-84
lines changed

src/Compiler/FSharp.Compiler.Service.fsproj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -501,8 +501,6 @@
501501
</ItemGroup>
502502

503503
<ItemGroup>
504-
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.1.0" />
505-
<PackageReference Include="OpenTelemetry.Exporter.Zipkin" Version="1.1.0" />
506504
<PackageReference Include="System.Runtime.Loader" Version="$(SystemRuntimeLoaderVersion)" />
507505
<PackageReference Include="System.Collections.Immutable" Version="$(SystemCollectionsImmutableVersion)" />
508506
<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="$(SystemdiagnosticsDiagnosticSourceVersion)" />

src/Compiler/Facilities/BuildGraph.fs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,29 +94,30 @@ type NodeCodeBuilder() =
9494
member _.Combine(Node (p1): NodeCode<unit>, Node (p2): NodeCode<'T>) : NodeCode<'T> = Node(async.Combine(p1, p2))
9595

9696
[<DebuggerHidden; DebuggerStepThrough>]
97-
member _.Using(value: ActivityFacade, binder: ActivityFacade -> NodeCode<'U>) =
97+
member _.Using(value: CompilationGlobalsScope, binder: CompilationGlobalsScope -> NodeCode<'U>) =
9898
Node(
9999
async {
100+
DiagnosticsThreadStatics.DiagnosticsLogger <- value.DiagnosticsLogger
101+
DiagnosticsThreadStatics.BuildPhase <- value.BuildPhase
102+
100103
try
101104
return! binder value |> Async.AwaitNodeCode
102105
finally
103106
(value :> IDisposable).Dispose()
104107
}
105108
)
106-
109+
107110
[<DebuggerHidden; DebuggerStepThrough>]
108-
member _.Using(value: CompilationGlobalsScope, binder: CompilationGlobalsScope -> NodeCode<'U>) =
111+
member _.Using(value: ActivityFacade, binder: ActivityFacade -> NodeCode<'U>) =
109112
Node(
110113
async {
111-
DiagnosticsThreadStatics.DiagnosticsLogger <- value.DiagnosticsLogger
112-
DiagnosticsThreadStatics.BuildPhase <- value.BuildPhase
113-
114114
try
115115
return! binder value |> Async.AwaitNodeCode
116116
finally
117117
(value :> IDisposable).Dispose()
118118
}
119119
)
120+
120121

121122
let node = NodeCodeBuilder()
122123

src/Compiler/Service/service.fs

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ open FSharp.Compiler.Text
3535
open FSharp.Compiler.Text.Range
3636
open FSharp.Compiler.TcGlobals
3737
open FSharp.Compiler.BuildGraph
38-
open OpenTelemetry
39-
open OpenTelemetry.Resources
4038

4139
[<AutoOpen>]
4240
module EnvMisc =
@@ -343,8 +341,7 @@ type BackgroundCompiler
343341
member x.EvaluateRawContents() =
344342
node {
345343
Trace.TraceInformation("FCS: {0}.{1} ({2})", userOpName, "GetAssemblyData", nm)
346-
let! x = self.GetAssemblyData(opts, userOpName + ".CheckReferencedProject(" + nm + ")")
347-
return x
344+
return! self.GetAssemblyData(opts, userOpName + ".CheckReferencedProject(" + nm + ")")
348345
}
349346

350347
member x.TryGetLogicalTimeStamp(cache) =
@@ -739,6 +736,13 @@ type BackgroundCompiler
739736
userOpName
740737
) =
741738
node {
739+
use _ =
740+
Activity.instance.Start "CheckFileInProjectAllowingStaleCachedResults"
741+
[|
742+
"Project", options.ProjectFileName
743+
"filename", fileName
744+
"UserOpName", userOpName |> Option.defaultValue ""
745+
|]
742746
let! cachedResults =
743747
node {
744748
let! builderOpt, creationDiags = getAnyBuilder (options, userOpName)
@@ -772,12 +776,11 @@ type BackgroundCompiler
772776
/// Type-check the result obtained by parsing. Force the evaluation of the antecedent type checking context if needed.
773777
member bc.CheckFileInProject(parseResults: FSharpParseFileResults, fileName, fileVersion, sourceText: ISourceText, options, userOpName) =
774778
node {
775-
use _ = Activity.instance.Start "Service_CheckFileInProject" [|"project", options.ProjectFileName; "fileName", fileName|]
779+
use _ = Activity.instance.Start "CheckFileInProject" [|"project", options.ProjectFileName; "fileName", fileName; "userOpName", userOpName|]
776780
let! builderOpt, creationDiags = getOrCreateBuilder (options, userOpName)
777781

778782
match builderOpt with
779-
| None ->
780-
return FSharpCheckFileAnswer.Succeeded(FSharpCheckFileResults.MakeEmpty(fileName, creationDiags, keepAssemblyContents))
783+
| None -> return FSharpCheckFileAnswer.Succeeded(FSharpCheckFileResults.MakeEmpty(fileName, creationDiags, keepAssemblyContents))
781784
| Some builder ->
782785
// Check the cache. We can only use cached results when there is no work to do to bring the background builder up-to-date
783786
let! cachedResults = bc.GetCachedCheckFileResult(builder, fileName, sourceText, options)
@@ -1234,7 +1237,7 @@ type FSharpChecker
12341237
enableBackgroundItemKeyStoreAndSemanticClassification,
12351238
enablePartialTypeChecking
12361239
)
1237-
1240+
12381241
static let globalInstance = lazy FSharpChecker.Create()
12391242

12401243
// STATIC ROOT: FSharpLanguageServiceTestable.FSharpChecker.braceMatchCache. Most recently used cache for brace matching. Accessed on the
@@ -1525,13 +1528,6 @@ type FSharpChecker
15251528
?userOpName: string
15261529
) =
15271530
async {
1528-
use _ =
1529-
Activity.instance.Start "CheckFileInProjectAllowingStaleCachedResults"
1530-
[|
1531-
"Project", options.ProjectFileName
1532-
"filename", fileName
1533-
"UserOpName", userOpName |> Option.defaultValue ""
1534-
|]
15351531
let userOpName = defaultArg userOpName "Unknown"
15361532
return!
15371533
backgroundCompiler.CheckFileInProjectAllowingStaleCachedResults(
@@ -1557,13 +1553,6 @@ type FSharpChecker
15571553
?userOpName: string
15581554
) =
15591555
async {
1560-
use _ =
1561-
Activity.instance.Start "CheckFileInProject"
1562-
[|
1563-
"Project", options.ProjectFileName
1564-
"filename", fileName
1565-
"UserOpName", userOpName |> Option.defaultValue ""
1566-
|]
15671556
let userOpName = defaultArg userOpName "Unknown"
15681557
return!
15691558
backgroundCompiler.CheckFileInProject(parseResults, fileName, fileVersion, sourceText, options, userOpName)

src/fsc/fscmain.fs

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -13,37 +13,16 @@ open Internal.Utilities.Library.Extras
1313
open FSharp.Compiler.AbstractIL
1414
open FSharp.Compiler.AbstractIL.ILBinaryReader
1515
open FSharp.Compiler.CompilerConfig
16-
open FSharp.Compiler.Diagnostics
1716
open FSharp.Compiler.Driver
1817
open FSharp.Compiler.DiagnosticsLogger
1918
open FSharp.Compiler.CodeAnalysis
2019
open FSharp.Compiler.Text
21-
open System.Diagnostics
22-
open OpenTelemetry
23-
open OpenTelemetry.Resources
24-
open OpenTelemetry.Trace
2520

2621
[<Dependency("FSharp.Compiler.Service", LoadHint.Always)>]
2722
do ()
2823

2924
[<EntryPoint>]
30-
let main(argv) =
31-
32-
// eventually this would need to only export to the OLTP collector, and even then only if configured. always-on is no good.
33-
// when this configuration becomes opt-in, we'll also need to safely check activities around every StartActivity call, because those could
34-
// be null
35-
use tracerProvider =
36-
Sdk.CreateTracerProviderBuilder()
37-
.AddSource(Activity.instance.Name)
38-
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(serviceName ="fsc", serviceVersion = "42.42.42.42"))
39-
.AddJaegerExporter()
40-
.Build();
41-
use mainActivity = Activity.instance.StartNoTags "main"
42-
43-
let forceCleanup() =
44-
mainActivity.Dispose()
45-
Activity.instance.Dispose()
46-
tracerProvider.Dispose()
25+
let main (argv) =
4726

4827
let compilerName =
4928
// the 64 bit desktop version of the compiler is name fscAnyCpu.exe, all others are fsc.exe
@@ -85,7 +64,6 @@ let main(argv) =
8564
let stats = ILBinaryReader.GetStatistics()
8665

8766
AppDomain.CurrentDomain.ProcessExit.Add(fun _ ->
88-
forceCleanup()
8967
printfn
9068
"STATS: #ByteArrayFile = %d, #MemoryMappedFileOpen = %d, #MemoryMappedFileClosed = %d, #RawMemoryFile = %d, #WeakByteArrayFile = %d"
9169
stats.byteFileCount
@@ -99,7 +77,6 @@ let main(argv) =
9977
let quitProcessExiter =
10078
{ new Exiter with
10179
member _.Exit(n) =
102-
forceCleanup()
10380
try
10481
exit n
10582
with _ ->
Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,7 @@
1-
open System
2-
open BenchmarkDotNet.Configs
3-
open BenchmarkDotNet.Running
1+
open BenchmarkDotNet.Running
42
open FSharp.Compiler.Benchmarks
5-
open OpenTelemetry
6-
open OpenTelemetry.Resources
7-
open OpenTelemetry.Trace
8-
9-
open FSharp.Compiler.Diagnostics
103

114
[<EntryPoint>]
125
let main args =
13-
let b = DecentlySizedStandAloneFileBenchmark()
14-
15-
// eventually this would need to only export to the OLTP collector, and even then only if configured. always-on is no good.
16-
// when this configuration becomes opt-in, we'll also need to safely check activities around every StartActivity call, because those could
17-
// be null
18-
use tracerProvider =
19-
Sdk.CreateTracerProviderBuilder()
20-
.AddSource(Activity.instance.Name)
21-
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(serviceName ="program", serviceVersion = "42.42.42.44"))
22-
.AddOtlpExporter()
23-
.AddZipkinExporter()
24-
.Build();
25-
use mainActivity = Activity.instance.StartNoTags("main")
26-
27-
let forceCleanup() =
28-
mainActivity.Dispose()
29-
Activity.instance.Dispose()
30-
tracerProvider.Dispose()
31-
32-
b.Setup()
33-
b.Run()
34-
forceCleanup()
6+
BenchmarkSwitcher.FromAssembly(typeof<DecentlySizedStandAloneFileBenchmark>.Assembly).Run(args) |> ignore
357
0

0 commit comments

Comments
 (0)