Skip to content

Commit

Permalink
Hacks to make telemetry work in incremental builder
Browse files Browse the repository at this point in the history
  • Loading branch information
safesparrow committed Aug 31, 2022
1 parent 30fd578 commit 16fcfd4
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 15 deletions.
5 changes: 3 additions & 2 deletions src/Compiler/Driver/ParseAndCheckInputs.fs
Original file line number Diff line number Diff line change
Expand Up @@ -1140,6 +1140,9 @@ let CheckOneInput

cancellable {
try
use tcOneInputActivity = activitySource.StartActivity("CheckOneInput")
tcOneInputActivity.AddTag("inputName", inp.FileName) |> ignore<_>

CheckSimulateException tcConfig

let m = inp.Range
Expand Down Expand Up @@ -1293,8 +1296,6 @@ let CheckOneInput

/// Typecheck a single file (or interactive entry into F# Interactive)
let TypeCheckOneInputEntry (ctok, checkForErrors, tcConfig: TcConfig, tcImports, tcGlobals, prefixPathOpt) tcState (inp: ParsedInput) =
use tcOneInputActivity = activitySource.StartActivity("CheckOneInput")
tcOneInputActivity.AddTag("inputName", inp.FileName) |> ignore<_>
// 'use' ensures that the warning handler is restored at the end
use unwindEL =
PushDiagnosticsLoggerPhaseUntilUnwind(fun oldLogger ->
Expand Down
1 change: 0 additions & 1 deletion src/Compiler/FSharp.Compiler.Service.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>netstandard2.0;net472;</TargetFrameworks>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
<OutputType>Library</OutputType>
<NoWarn>$(NoWarn);44</NoWarn> <!-- Obsolete -->
Expand Down
18 changes: 8 additions & 10 deletions src/Compiler/Service/service.fs
Original file line number Diff line number Diff line change
Expand Up @@ -1209,18 +1209,15 @@ module Foo =
let tracerProvider =
Sdk.CreateTracerProviderBuilder()
.AddSource(activitySourceName)
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(serviceName ="FSharpChecker", serviceVersion = "42.42.42.42"))
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(serviceName ="fsc", serviceVersion = "42.42.42.42"))
.AddOtlpExporter()
.AddZipkinExporter()
.Build();
let mainActivity = activitySource.StartActivity("main")

.Build()

let forceCleanup() =
mainActivity.Dispose()
activitySource.Dispose()
tracerProvider.Dispose()

forceCleanup
forceCleanup()

[<Sealed; AutoSerializable(false)>]
// There is typically only one instance of this type in an IDE process.
Expand Down Expand Up @@ -1249,9 +1246,10 @@ type FSharpChecker
enableBackgroundItemKeyStoreAndSemanticClassification,
enablePartialTypeChecking
)

do Foo.init() |> ignore


// let _ = Foo.init()
// let _ = FSharp.Compiler.Diagnostics.Activity.activitySource.StartActivity("main")

static let globalInstance = lazy FSharpChecker.Create()

// STATIC ROOT: FSharpLanguageServiceTestable.FSharpChecker.braceMatchCache. Most recently used cache for brace matching. Accessed on the
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,34 @@
open BenchmarkDotNet.Running
open BenchmarkDotNet.Configs
open BenchmarkDotNet.Running
open FSharp.Compiler.Benchmarks
open OpenTelemetry
open OpenTelemetry.Resources
open OpenTelemetry.Trace

open FSharp.Compiler.Diagnostics.Activity

[<EntryPoint>]
let main args =
BenchmarkSwitcher.FromAssembly(typeof<DecentlySizedStandAloneFileBenchmark>.Assembly).Run(args) |> ignore
let b = DecentlySizedStandAloneFileBenchmark()

// eventually this would need to only export to the OLTP collector, and even then only if configured. always-on is no good.
// when this configuration becomes opt-in, we'll also need to safely check activities around every StartActivity call, because those could
// be null
use tracerProvider =
Sdk.CreateTracerProviderBuilder()
.AddSource(activitySourceName)
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(serviceName ="program", serviceVersion = "42.42.42.44"))
.AddOtlpExporter()
.AddZipkinExporter()
.Build();
use mainActivity = activitySource.StartActivity("main")

let forceCleanup() =
mainActivity.Dispose()
activitySource.Dispose()
tracerProvider.Dispose()

b.Setup()
b.Run()
forceCleanup()
0

0 comments on commit 16fcfd4

Please sign in to comment.