Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
7c0d427
TracerBuilder depedency injection improvements.
CodeBlanch Aug 3, 2022
4c01825
Fixes and API updates.
CodeBlanch Aug 3, 2022
a64ae6b
Update skipped test.
CodeBlanch Aug 3, 2022
816736e
Tweak.
CodeBlanch Aug 3, 2022
ae8a856
Tweaks.
CodeBlanch Aug 3, 2022
96e29c2
Test fix.
CodeBlanch Aug 4, 2022
bb17782
Turn on options in TracerProviderBuilderBase.
CodeBlanch Aug 4, 2022
ed11c2b
Updated CHANGELOGs.
CodeBlanch Aug 4, 2022
95f71d3
Merge remote-tracking branch 'upstream/main' into tracerprovider-depe…
CodeBlanch Aug 4, 2022
dcfb85a
Added XML comments to AddOpenTelemetryTracing methods.
CodeBlanch Aug 4, 2022
a22dad3
Merge remote-tracking branch 'upstream/main' into tracerprovider-depe…
CodeBlanch Aug 5, 2022
a1ea05d
Tweaks.
CodeBlanch Aug 5, 2022
b5d285d
Merge from main.
CodeBlanch Aug 6, 2022
e02a951
Added export helpers and restored removed API from hosting library so…
CodeBlanch Aug 6, 2022
d3b0ac6
Export extension tweaks.
CodeBlanch Aug 6, 2022
c0eee21
Tweak.
CodeBlanch Aug 6, 2022
f3f0e85
Tracer builder improvements.
CodeBlanch Aug 8, 2022
d8338cd
Fix hosting multiple configurations test.
CodeBlanch Aug 8, 2022
2a7906d
Cleanup.
CodeBlanch Aug 8, 2022
dea2152
Cleanup and fixes.
CodeBlanch Aug 9, 2022
8be5f98
Added "UseOpenTelemetry" extensions.
CodeBlanch Aug 15, 2022
9e02797
Cleanup.
CodeBlanch Aug 15, 2022
b458552
Code review.
CodeBlanch Aug 17, 2022
489ae0c
Code review.
CodeBlanch Aug 17, 2022
d953928
Rename SDK extension "Configure" and restore "Add" in the hosting lib.
CodeBlanch Aug 17, 2022
cd95c32
Merging from main.
CodeBlanch Aug 19, 2022
57e3b49
Doc clarification.
CodeBlanch Aug 19, 2022
6467f6d
Some test coverage.
CodeBlanch Aug 19, 2022
cb37f39
README updates.
CodeBlanch Aug 19, 2022
ecd1df4
Fix double dispose of TracerProvider when using Sdk.CreateTracerProvi…
CodeBlanch Aug 19, 2022
59979e2
AddExporter tests.
CodeBlanch Aug 19, 2022
923211d
More test coverage.
CodeBlanch Aug 19, 2022
ae64512
More test coverage.
CodeBlanch Aug 19, 2022
856c751
Code review.
CodeBlanch Aug 23, 2022
b3a46b5
Merge branch 'main' into tracerprovider-dependencyinjection
CodeBlanch Aug 23, 2022
c91f02d
Merge branch 'main' into tracerprovider-dependencyinjection
CodeBlanch Aug 29, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Tweaks.
  • Loading branch information
CodeBlanch committed Aug 5, 2022
commit a1ea05dc64bc69eb49e6eedfb6785033a1b261be
15 changes: 11 additions & 4 deletions src/OpenTelemetry/Trace/TracerProviderBuilderBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using Microsoft.Extensions.DependencyInjection;
using OpenTelemetry.Internal;
using OpenTelemetry.Resources;
Expand Down Expand Up @@ -284,15 +285,21 @@ protected virtual TracerProvider OnBuild()

// Step 3: Look for any samplers registered.

var registeredSampler = serviceProvider.GetService<Sampler>();
var registeredSamplers = serviceProvider.GetServices<Sampler>();
int registeredSamplerCount = registeredSamplers.Count();
if (registeredSamplerCount > 1)
{
throw new NotSupportedException("Multiple samplers registered in application services is not supported.");
}

var sampler = this.sampler;
if (sampler == null)
{
sampler = registeredSampler ?? new ParentBasedSampler(new AlwaysOnSampler());
sampler = registeredSamplers.First() ?? new ParentBasedSampler(new AlwaysOnSampler());
}
else if (registeredSampler != null)
else if (registeredSamplerCount > 0)
{
throw new NotSupportedException("A sampler was registered in application services and set on tracer builder directly.");
throw new NotSupportedException("Setting sampler directly on tracer builder and through application services is not supported.");
}

// Step 4: Look for any processors registered.
Expand Down
19 changes: 13 additions & 6 deletions src/OpenTelemetry/Trace/TracerProviderBuilderExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
using System;
using System.Diagnostics;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using OpenTelemetry.Internal;
using OpenTelemetry.Resources;

Expand Down Expand Up @@ -65,15 +66,18 @@ public static TracerProviderBuilder SetSampler(this TracerProviderBuilder tracer
/// <summary>
/// Sets the sampler on the provider.
/// </summary>
/// <remarks>
/// Note: The type specified by <typeparamref name="T"/> will be
/// registered as a singleton service into application services.
/// </remarks>
/// <typeparam name="T">Sampler type.</typeparam>
/// <param name="tracerProviderBuilder"><see cref="TracerProviderBuilder"/>.</param>
/// <returns>The supplied <see cref="TracerProviderBuilder"/> for chaining.</returns>
public static TracerProviderBuilder SetSampler<T>(this TracerProviderBuilder tracerProviderBuilder)
where T : Sampler
{
return ConfigureBuilder(
tracerProviderBuilder,
(sp, builder) => builder.SetSampler(sp.GetRequiredService<T>()));
return tracerProviderBuilder
.ConfigureServices(services => services.TryAddSingleton<Sampler, T>());
}

/// <summary>
Expand Down Expand Up @@ -139,15 +143,18 @@ public static TracerProviderBuilder AddProcessor(this TracerProviderBuilder trac
/// <summary>
/// Adds a processor to the provider which will be retrieved using dependency injection.
/// </summary>
/// <remarks>
/// Note: The type specified by <typeparamref name="T"/> will be
/// registered as a singleton service into application services.
/// </remarks>
/// <typeparam name="T">Processor type.</typeparam>
/// <param name="tracerProviderBuilder">TracerProviderBuilder instance.</param>
/// <returns>The supplied <see cref="TracerProviderBuilder"/> for chaining.</returns>
public static TracerProviderBuilder AddProcessor<T>(this TracerProviderBuilder tracerProviderBuilder)
where T : BaseProcessor<Activity>
{
return ConfigureBuilder(
tracerProviderBuilder,
(sp, provider) => provider.AddProcessor(sp.GetRequiredService<T>()));
return tracerProviderBuilder
.ConfigureServices(services => services.TryAddSingleton<BaseProcessor<Activity>, T>());
}

/// <summary>
Expand Down