Skip to content

Commit 82b1fbd

Browse files
[Exporter.Prometheus] Nullable (open-telemetry#5791)
Co-authored-by: Mikel Blanchard <[email protected]>
1 parent 6194d9b commit 82b1fbd

25 files changed

+133
-121
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#nullable enable

src/OpenTelemetry.Exporter.Prometheus.AspNetCore/.publicApi/PublicAPI.Unshipped.txt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@ OpenTelemetry.Exporter.PrometheusAspNetCoreOptions
44
OpenTelemetry.Exporter.PrometheusAspNetCoreOptions.DisableTotalNameSuffixForCounters.get -> bool
55
OpenTelemetry.Exporter.PrometheusAspNetCoreOptions.DisableTotalNameSuffixForCounters.set -> void
66
OpenTelemetry.Exporter.PrometheusAspNetCoreOptions.PrometheusAspNetCoreOptions() -> void
7-
OpenTelemetry.Exporter.PrometheusAspNetCoreOptions.ScrapeEndpointPath.get -> string
7+
OpenTelemetry.Exporter.PrometheusAspNetCoreOptions.ScrapeEndpointPath.get -> string?
88
OpenTelemetry.Exporter.PrometheusAspNetCoreOptions.ScrapeEndpointPath.set -> void
99
OpenTelemetry.Exporter.PrometheusAspNetCoreOptions.ScrapeResponseCacheDurationMilliseconds.get -> int
1010
OpenTelemetry.Exporter.PrometheusAspNetCoreOptions.ScrapeResponseCacheDurationMilliseconds.set -> void
1111
OpenTelemetry.Metrics.PrometheusExporterMeterProviderBuilderExtensions
12-
static Microsoft.AspNetCore.Builder.PrometheusExporterApplicationBuilderExtensions.UseOpenTelemetryPrometheusScrapingEndpoint(this Microsoft.AspNetCore.Builder.IApplicationBuilder app) -> Microsoft.AspNetCore.Builder.IApplicationBuilder
13-
static Microsoft.AspNetCore.Builder.PrometheusExporterApplicationBuilderExtensions.UseOpenTelemetryPrometheusScrapingEndpoint(this Microsoft.AspNetCore.Builder.IApplicationBuilder app, OpenTelemetry.Metrics.MeterProvider meterProvider, System.Func<Microsoft.AspNetCore.Http.HttpContext, bool> predicate, string path, System.Action<Microsoft.AspNetCore.Builder.IApplicationBuilder> configureBranchedPipeline, string optionsName) -> Microsoft.AspNetCore.Builder.IApplicationBuilder
14-
static Microsoft.AspNetCore.Builder.PrometheusExporterApplicationBuilderExtensions.UseOpenTelemetryPrometheusScrapingEndpoint(this Microsoft.AspNetCore.Builder.IApplicationBuilder app, string path) -> Microsoft.AspNetCore.Builder.IApplicationBuilder
15-
static Microsoft.AspNetCore.Builder.PrometheusExporterApplicationBuilderExtensions.UseOpenTelemetryPrometheusScrapingEndpoint(this Microsoft.AspNetCore.Builder.IApplicationBuilder app, System.Func<Microsoft.AspNetCore.Http.HttpContext, bool> predicate) -> Microsoft.AspNetCore.Builder.IApplicationBuilder
16-
static Microsoft.AspNetCore.Builder.PrometheusExporterEndpointRouteBuilderExtensions.MapPrometheusScrapingEndpoint(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder endpoints) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder
17-
static Microsoft.AspNetCore.Builder.PrometheusExporterEndpointRouteBuilderExtensions.MapPrometheusScrapingEndpoint(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder endpoints, string path) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder
18-
static Microsoft.AspNetCore.Builder.PrometheusExporterEndpointRouteBuilderExtensions.MapPrometheusScrapingEndpoint(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder endpoints, string path, OpenTelemetry.Metrics.MeterProvider meterProvider, System.Action<Microsoft.AspNetCore.Builder.IApplicationBuilder> configureBranchedPipeline, string optionsName) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder
19-
static OpenTelemetry.Metrics.PrometheusExporterMeterProviderBuilderExtensions.AddPrometheusExporter(this OpenTelemetry.Metrics.MeterProviderBuilder builder) -> OpenTelemetry.Metrics.MeterProviderBuilder
20-
static OpenTelemetry.Metrics.PrometheusExporterMeterProviderBuilderExtensions.AddPrometheusExporter(this OpenTelemetry.Metrics.MeterProviderBuilder builder, string name, System.Action<OpenTelemetry.Exporter.PrometheusAspNetCoreOptions> configure) -> OpenTelemetry.Metrics.MeterProviderBuilder
21-
static OpenTelemetry.Metrics.PrometheusExporterMeterProviderBuilderExtensions.AddPrometheusExporter(this OpenTelemetry.Metrics.MeterProviderBuilder builder, System.Action<OpenTelemetry.Exporter.PrometheusAspNetCoreOptions> configure) -> OpenTelemetry.Metrics.MeterProviderBuilder
12+
static Microsoft.AspNetCore.Builder.PrometheusExporterApplicationBuilderExtensions.UseOpenTelemetryPrometheusScrapingEndpoint(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app) -> Microsoft.AspNetCore.Builder.IApplicationBuilder!
13+
static Microsoft.AspNetCore.Builder.PrometheusExporterApplicationBuilderExtensions.UseOpenTelemetryPrometheusScrapingEndpoint(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, OpenTelemetry.Metrics.MeterProvider? meterProvider, System.Func<Microsoft.AspNetCore.Http.HttpContext!, bool>? predicate, string? path, System.Action<Microsoft.AspNetCore.Builder.IApplicationBuilder!>? configureBranchedPipeline, string? optionsName) -> Microsoft.AspNetCore.Builder.IApplicationBuilder!
14+
static Microsoft.AspNetCore.Builder.PrometheusExporterApplicationBuilderExtensions.UseOpenTelemetryPrometheusScrapingEndpoint(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, string! path) -> Microsoft.AspNetCore.Builder.IApplicationBuilder!
15+
static Microsoft.AspNetCore.Builder.PrometheusExporterApplicationBuilderExtensions.UseOpenTelemetryPrometheusScrapingEndpoint(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, System.Func<Microsoft.AspNetCore.Http.HttpContext!, bool>! predicate) -> Microsoft.AspNetCore.Builder.IApplicationBuilder!
16+
static Microsoft.AspNetCore.Builder.PrometheusExporterEndpointRouteBuilderExtensions.MapPrometheusScrapingEndpoint(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder!
17+
static Microsoft.AspNetCore.Builder.PrometheusExporterEndpointRouteBuilderExtensions.MapPrometheusScrapingEndpoint(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, string! path) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder!
18+
static Microsoft.AspNetCore.Builder.PrometheusExporterEndpointRouteBuilderExtensions.MapPrometheusScrapingEndpoint(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, string? path, OpenTelemetry.Metrics.MeterProvider? meterProvider, System.Action<Microsoft.AspNetCore.Builder.IApplicationBuilder!>? configureBranchedPipeline, string? optionsName) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder!
19+
static OpenTelemetry.Metrics.PrometheusExporterMeterProviderBuilderExtensions.AddPrometheusExporter(this OpenTelemetry.Metrics.MeterProviderBuilder! builder) -> OpenTelemetry.Metrics.MeterProviderBuilder!
20+
static OpenTelemetry.Metrics.PrometheusExporterMeterProviderBuilderExtensions.AddPrometheusExporter(this OpenTelemetry.Metrics.MeterProviderBuilder! builder, string? name, System.Action<OpenTelemetry.Exporter.PrometheusAspNetCoreOptions!>? configure) -> OpenTelemetry.Metrics.MeterProviderBuilder!
21+
static OpenTelemetry.Metrics.PrometheusExporterMeterProviderBuilderExtensions.AddPrometheusExporter(this OpenTelemetry.Metrics.MeterProviderBuilder! builder, System.Action<OpenTelemetry.Exporter.PrometheusAspNetCoreOptions!>! configure) -> OpenTelemetry.Metrics.MeterProviderBuilder!

src/OpenTelemetry.Exporter.Prometheus.AspNetCore/OpenTelemetry.Exporter.Prometheus.AspNetCore.csproj

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@
77
<PackageTags>$(PackageTags);prometheus;metrics</PackageTags>
88
<MinVerTagPrefix>coreunstable-</MinVerTagPrefix>
99
<DefineConstants>$(DefineConstants);PROMETHEUS_ASPNETCORE</DefineConstants>
10-
11-
<!-- this is temporary. will remove in future PR. -->
12-
<Nullable>disable</Nullable>
1310
</PropertyGroup>
1411

1512
<ItemGroup Condition="'$(RunningDotNetPack)' != 'true'">
@@ -25,7 +22,6 @@
2522
</ItemGroup>
2623

2724
<ItemGroup>
28-
<Compile Include="$(RepoRoot)\src\Shared\Guard.cs" Link="Includes\Guard.cs" />
2925
<Compile Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Prometheus.HttpListener\Internal\PrometheusCollectionManager.cs" Link="Includes/PrometheusCollectionManager.cs" />
3026
<Compile Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Prometheus.HttpListener\Internal\PrometheusExporter.cs" Link="Includes/PrometheusExporter.cs" />
3127
<Compile Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Prometheus.HttpListener\Internal\PrometheusExporterEventSource.cs" Link="Includes/PrometheusExporterEventSource.cs" />
@@ -36,6 +32,8 @@
3632
<Compile Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Prometheus.HttpListener\Internal\PrometheusMetric.cs" Link="Includes/PrometheusMetric.cs" />
3733
<Compile Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Prometheus.HttpListener\Internal\PrometheusHeadersParser.cs" Link="Includes/PrometheusHeadersParser.cs" />
3834
<Compile Include="$(RepoRoot)\src\Shared\ExceptionExtensions.cs" Link="Includes\ExceptionExtensions.cs" />
35+
<Compile Include="$(RepoRoot)\src\Shared\Guard.cs" Link="Includes\Guard.cs" />
36+
<Compile Include="$(RepoRoot)\src\Shared\Shims\NullableAttributes.cs" Link="Includes\Shims\NullableAttributes.cs" />
3937
</ItemGroup>
4038

4139
</Project>

src/OpenTelemetry.Exporter.Prometheus.AspNetCore/PrometheusAspNetCoreOptions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class PrometheusAspNetCoreOptions
1515
/// <summary>
1616
/// Gets or sets the path to use for the scraping endpoint. Default value: "/metrics".
1717
/// </summary>
18-
public string ScrapeEndpointPath { get; set; } = DefaultScrapeEndpointPath;
18+
public string? ScrapeEndpointPath { get; set; } = DefaultScrapeEndpointPath;
1919

2020
/// <summary>
2121
/// Gets or sets a value indicating whether addition of _total suffix for counter metric names is disabled. Default value: <see langword="false"/>.

src/OpenTelemetry.Exporter.Prometheus.AspNetCore/PrometheusExporterApplicationBuilderExtensions.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,11 @@ public static IApplicationBuilder UseOpenTelemetryPrometheusScrapingEndpoint(thi
9393
/// cref="IApplicationBuilder"/> for chaining calls.</returns>
9494
public static IApplicationBuilder UseOpenTelemetryPrometheusScrapingEndpoint(
9595
this IApplicationBuilder app,
96-
MeterProvider meterProvider,
97-
Func<HttpContext, bool> predicate,
98-
string path,
99-
Action<IApplicationBuilder> configureBranchedPipeline,
100-
string optionsName)
96+
MeterProvider? meterProvider,
97+
Func<HttpContext, bool>? predicate,
98+
string? path,
99+
Action<IApplicationBuilder>? configureBranchedPipeline,
100+
string? optionsName)
101101
{
102102
// Note: Order is important here. MeterProvider is accessed before
103103
// GetOptions<PrometheusAspNetCoreOptions> so that any changes made to

src/OpenTelemetry.Exporter.Prometheus.AspNetCore/PrometheusExporterEndpointRouteBuilderExtensions.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ public static IEndpointConventionBuilder MapPrometheusScrapingEndpoint(this IEnd
6464
/// <returns>A convention routes for the Prometheus scraping endpoint.</returns>
6565
public static IEndpointConventionBuilder MapPrometheusScrapingEndpoint(
6666
this IEndpointRouteBuilder endpoints,
67-
string path,
68-
MeterProvider meterProvider,
69-
Action<IApplicationBuilder> configureBranchedPipeline,
70-
string optionsName)
67+
string? path,
68+
MeterProvider? meterProvider,
69+
Action<IApplicationBuilder>? configureBranchedPipeline,
70+
string? optionsName)
7171
{
7272
var builder = endpoints.CreateApplicationBuilder();
7373

src/OpenTelemetry.Exporter.Prometheus.AspNetCore/PrometheusExporterMeterProviderBuilderExtensions.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ public static MeterProviderBuilder AddPrometheusExporter(
3737
/// Adds <see cref="PrometheusExporter"/> to the <see cref="MeterProviderBuilder"/>.
3838
/// </summary>
3939
/// <param name="builder"><see cref="MeterProviderBuilder"/> builder to use.</param>
40-
/// <param name="name">Name which is used when retrieving options.</param>
41-
/// <param name="configure">Callback action for configuring <see cref="PrometheusAspNetCoreOptions"/>.</param>
40+
/// <param name="name">Optional name which is used when retrieving options.</param>
41+
/// <param name="configure">Optional callback action for configuring <see cref="PrometheusAspNetCoreOptions"/>.</param>
4242
/// <returns>The instance of <see cref="MeterProviderBuilder"/> to chain the calls.</returns>
4343
public static MeterProviderBuilder AddPrometheusExporter(
4444
this MeterProviderBuilder builder,
45-
string name,
46-
Action<PrometheusAspNetCoreOptions> configure)
45+
string? name,
46+
Action<PrometheusAspNetCoreOptions>? configure)
4747
{
4848
Guard.ThrowIfNull(builder);
4949

src/OpenTelemetry.Exporter.Prometheus.AspNetCore/PrometheusExporterMiddleware.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@ internal sealed class PrometheusExporterMiddleware
2525
public PrometheusExporterMiddleware(MeterProvider meterProvider, RequestDelegate next)
2626
{
2727
Guard.ThrowIfNull(meterProvider);
28+
Guard.ThrowIfNull(next);
2829

29-
if (!meterProvider.TryFindExporter(out PrometheusExporter exporter))
30+
if (!meterProvider.TryFindExporter(out PrometheusExporter? exporter))
3031
{
3132
throw new ArgumentException("A PrometheusExporter could not be found configured on the provided MeterProvider.");
3233
}
@@ -36,6 +37,8 @@ public PrometheusExporterMiddleware(MeterProvider meterProvider, RequestDelegate
3637

3738
internal PrometheusExporterMiddleware(PrometheusExporter exporter)
3839
{
40+
Debug.Assert(exporter != null, "exporter was null");
41+
3942
this.exporter = exporter;
4043
}
4144

@@ -71,7 +74,7 @@ public async Task InvokeAsync(HttpContext httpContext)
7174
? "application/openmetrics-text; version=1.0.0; charset=utf-8"
7275
: "text/plain; charset=utf-8; version=0.0.4";
7376

74-
await response.Body.WriteAsync(dataView.Array, 0, dataView.Count).ConfigureAwait(false);
77+
await response.Body.WriteAsync(dataView.Array!, 0, dataView.Count).ConfigureAwait(false);
7578
}
7679
else
7780
{
@@ -93,8 +96,6 @@ public async Task InvokeAsync(HttpContext httpContext)
9396
response.StatusCode = 500;
9497
}
9598
}
96-
97-
this.exporter.OnExport = null;
9899
}
99100

100101
private static bool AcceptsOpenMetrics(HttpRequest request)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#nullable enable
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
OpenTelemetry.Exporter.PrometheusHttpListenerOptions
22
OpenTelemetry.Exporter.PrometheusHttpListenerOptions.DisableTotalNameSuffixForCounters.get -> bool
33
OpenTelemetry.Exporter.PrometheusHttpListenerOptions.DisableTotalNameSuffixForCounters.set -> void
4-
OpenTelemetry.Exporter.PrometheusHttpListenerOptions.UriPrefixes.get -> System.Collections.Generic.IReadOnlyCollection<string>
4+
OpenTelemetry.Exporter.PrometheusHttpListenerOptions.UriPrefixes.get -> System.Collections.Generic.IReadOnlyCollection<string!>!
55
OpenTelemetry.Exporter.PrometheusHttpListenerOptions.UriPrefixes.set -> void
66
OpenTelemetry.Exporter.PrometheusHttpListenerOptions.PrometheusHttpListenerOptions() -> void
7-
OpenTelemetry.Exporter.PrometheusHttpListenerOptions.ScrapeEndpointPath.get -> string
7+
OpenTelemetry.Exporter.PrometheusHttpListenerOptions.ScrapeEndpointPath.get -> string?
88
OpenTelemetry.Exporter.PrometheusHttpListenerOptions.ScrapeEndpointPath.set -> void
99
OpenTelemetry.Metrics.PrometheusHttpListenerMeterProviderBuilderExtensions
10-
static OpenTelemetry.Metrics.PrometheusHttpListenerMeterProviderBuilderExtensions.AddPrometheusHttpListener(this OpenTelemetry.Metrics.MeterProviderBuilder builder) -> OpenTelemetry.Metrics.MeterProviderBuilder
11-
static OpenTelemetry.Metrics.PrometheusHttpListenerMeterProviderBuilderExtensions.AddPrometheusHttpListener(this OpenTelemetry.Metrics.MeterProviderBuilder builder, string name, System.Action<OpenTelemetry.Exporter.PrometheusHttpListenerOptions> configure) -> OpenTelemetry.Metrics.MeterProviderBuilder
12-
static OpenTelemetry.Metrics.PrometheusHttpListenerMeterProviderBuilderExtensions.AddPrometheusHttpListener(this OpenTelemetry.Metrics.MeterProviderBuilder builder, System.Action<OpenTelemetry.Exporter.PrometheusHttpListenerOptions> configure) -> OpenTelemetry.Metrics.MeterProviderBuilder
10+
static OpenTelemetry.Metrics.PrometheusHttpListenerMeterProviderBuilderExtensions.AddPrometheusHttpListener(this OpenTelemetry.Metrics.MeterProviderBuilder! builder) -> OpenTelemetry.Metrics.MeterProviderBuilder!
11+
static OpenTelemetry.Metrics.PrometheusHttpListenerMeterProviderBuilderExtensions.AddPrometheusHttpListener(this OpenTelemetry.Metrics.MeterProviderBuilder! builder, string? name, System.Action<OpenTelemetry.Exporter.PrometheusHttpListenerOptions!>? configure) -> OpenTelemetry.Metrics.MeterProviderBuilder!
12+
static OpenTelemetry.Metrics.PrometheusHttpListenerMeterProviderBuilderExtensions.AddPrometheusHttpListener(this OpenTelemetry.Metrics.MeterProviderBuilder! builder, System.Action<OpenTelemetry.Exporter.PrometheusHttpListenerOptions!>! configure) -> OpenTelemetry.Metrics.MeterProviderBuilder!

0 commit comments

Comments
 (0)