Skip to content

Commit 16fcfd4

Browse files
committed
Hacks to make telemetry work in incremental builder
1 parent 30fd578 commit 16fcfd4

File tree

4 files changed

+40
-15
lines changed

4 files changed

+40
-15
lines changed

src/Compiler/Driver/ParseAndCheckInputs.fs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1140,6 +1140,9 @@ let CheckOneInput
11401140

11411141
cancellable {
11421142
try
1143+
use tcOneInputActivity = activitySource.StartActivity("CheckOneInput")
1144+
tcOneInputActivity.AddTag("inputName", inp.FileName) |> ignore<_>
1145+
11431146
CheckSimulateException tcConfig
11441147

11451148
let m = inp.Range
@@ -1293,8 +1296,6 @@ let CheckOneInput
12931296

12941297
/// Typecheck a single file (or interactive entry into F# Interactive)
12951298
let TypeCheckOneInputEntry (ctok, checkForErrors, tcConfig: TcConfig, tcImports, tcGlobals, prefixPathOpt) tcState (inp: ParsedInput) =
1296-
use tcOneInputActivity = activitySource.StartActivity("CheckOneInput")
1297-
tcOneInputActivity.AddTag("inputName", inp.FileName) |> ignore<_>
12981299
// 'use' ensures that the warning handler is restored at the end
12991300
use unwindEL =
13001301
PushDiagnosticsLoggerPhaseUntilUnwind(fun oldLogger ->

src/Compiler/FSharp.Compiler.Service.fsproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
<Project Sdk="Microsoft.NET.Sdk">
44

55
<PropertyGroup>
6-
<TargetFrameworks>netstandard2.0;net472;</TargetFrameworks>
76
<TargetFrameworks>netstandard2.0</TargetFrameworks>
87
<OutputType>Library</OutputType>
98
<NoWarn>$(NoWarn);44</NoWarn> <!-- Obsolete -->

src/Compiler/Service/service.fs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1209,18 +1209,15 @@ module Foo =
12091209
let tracerProvider =
12101210
Sdk.CreateTracerProviderBuilder()
12111211
.AddSource(activitySourceName)
1212-
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(serviceName ="FSharpChecker", serviceVersion = "42.42.42.42"))
1212+
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(serviceName ="fsc", serviceVersion = "42.42.42.42"))
12131213
.AddOtlpExporter()
12141214
.AddZipkinExporter()
1215-
.Build();
1216-
let mainActivity = activitySource.StartActivity("main")
1217-
1215+
.Build()
1216+
12181217
let forceCleanup() =
1219-
mainActivity.Dispose()
12201218
activitySource.Dispose()
12211219
tracerProvider.Dispose()
1222-
1223-
forceCleanup
1220+
forceCleanup()
12241221

12251222
[<Sealed; AutoSerializable(false)>]
12261223
// There is typically only one instance of this type in an IDE process.
@@ -1249,9 +1246,10 @@ type FSharpChecker
12491246
enableBackgroundItemKeyStoreAndSemanticClassification,
12501247
enablePartialTypeChecking
12511248
)
1252-
1253-
do Foo.init() |> ignore
1254-
1249+
1250+
// let _ = Foo.init()
1251+
// let _ = FSharp.Compiler.Diagnostics.Activity.activitySource.StartActivity("main")
1252+
12551253
static let globalInstance = lazy FSharpChecker.Create()
12561254

12571255
// STATIC ROOT: FSharpLanguageServiceTestable.FSharpChecker.braceMatchCache. Most recently used cache for brace matching. Accessed on the
Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,34 @@
1-
open BenchmarkDotNet.Running
1+
open BenchmarkDotNet.Configs
2+
open BenchmarkDotNet.Running
23
open FSharp.Compiler.Benchmarks
4+
open OpenTelemetry
5+
open OpenTelemetry.Resources
6+
open OpenTelemetry.Trace
7+
8+
open FSharp.Compiler.Diagnostics.Activity
39

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

0 commit comments

Comments
 (0)