Skip to content

Commit 9c56b86

Browse files
authored
Enable nullable on ConcurrencyLimiter, SpaServices.Extensions (#29329)
1 parent e37ddbc commit 9c56b86

24 files changed

+134
-183
lines changed

src/Middleware/ConcurrencyLimiter/src/ConcurrencyLimiterEventSource.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ internal sealed class ConcurrencyLimiterEventSource : EventSource
1313
public static readonly ConcurrencyLimiterEventSource Log = new ConcurrencyLimiterEventSource();
1414
private static readonly QueueFrame CachedNonTimerResult = new QueueFrame(timer: null, parent: Log);
1515

16-
private PollingCounter _rejectedRequestsCounter;
17-
private PollingCounter _queueLengthCounter;
18-
private EventCounter _queueDuration;
16+
private PollingCounter? _rejectedRequestsCounter;
17+
private PollingCounter? _queueLengthCounter;
18+
private EventCounter? _queueDuration;
1919

2020
private long _rejectedRequests;
2121
private int _queueLength;
@@ -43,7 +43,7 @@ public void QueueSkipped()
4343
{
4444
if (IsEnabled())
4545
{
46-
_queueDuration.WriteMetric(0);
46+
_queueDuration!.WriteMetric(0);
4747
}
4848
}
4949

@@ -78,7 +78,7 @@ public void Dispose()
7878
if (_parent.IsEnabled() && _timer != null)
7979
{
8080
var duration = _timer.Value.GetElapsedTime().TotalMilliseconds;
81-
_parent._queueDuration.WriteMetric(duration);
81+
_parent._queueDuration!.WriteMetric(duration);
8282
}
8383
}
8484
}

src/Middleware/ConcurrencyLimiter/src/ConcurrencyLimiterMiddleware.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,16 +86,16 @@ public async Task Invoke(HttpContext context)
8686

8787
private static class ConcurrencyLimiterLog
8888
{
89-
private static readonly Action<ILogger, int, Exception> _requestEnqueued =
89+
private static readonly Action<ILogger, int, Exception?> _requestEnqueued =
9090
LoggerMessage.Define<int>(LogLevel.Debug, new EventId(1, "RequestEnqueued"), "MaxConcurrentRequests limit reached, request has been queued. Current active requests: {ActiveRequests}.");
9191

92-
private static readonly Action<ILogger, int, Exception> _requestDequeued =
92+
private static readonly Action<ILogger, int, Exception?> _requestDequeued =
9393
LoggerMessage.Define<int>(LogLevel.Debug, new EventId(2, "RequestDequeued"), "Request dequeued. Current active requests: {ActiveRequests}.");
9494

95-
private static readonly Action<ILogger, int, Exception> _requestRunImmediately =
95+
private static readonly Action<ILogger, int, Exception?> _requestRunImmediately =
9696
LoggerMessage.Define<int>(LogLevel.Debug, new EventId(3, "RequestRunImmediately"), "Below MaxConcurrentRequests limit, running request immediately. Current active requests: {ActiveRequests}");
9797

98-
private static readonly Action<ILogger, Exception> _requestRejectedQueueFull =
98+
private static readonly Action<ILogger, Exception?> _requestRejectedQueueFull =
9999
LoggerMessage.Define(LogLevel.Debug, new EventId(4, "RequestRejectedQueueFull"), "Currently at the 'RequestQueueLimit', rejecting this request with a '503 server not available' error");
100100

101101
internal static void RequestEnqueued(ILogger logger, int activeRequests)

src/Middleware/ConcurrencyLimiter/src/Microsoft.AspNetCore.ConcurrencyLimiter.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
66
<GenerateDocumentationFile>true</GenerateDocumentationFile>
77
<PackageTags>aspnetcore;queue;queuing</PackageTags>
8+
<Nullable>enable</Nullable>
89
</PropertyGroup>
910

1011
<ItemGroup>

src/Middleware/ConcurrencyLimiter/src/PublicAPI.Shipped.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ Microsoft.AspNetCore.ConcurrencyLimiter.QueuePolicyOptions.QueuePolicyOptions()
1313
Microsoft.AspNetCore.ConcurrencyLimiter.QueuePolicyOptions.RequestQueueLimit.get -> int
1414
Microsoft.AspNetCore.ConcurrencyLimiter.QueuePolicyOptions.RequestQueueLimit.set -> void
1515
Microsoft.Extensions.DependencyInjection.QueuePolicyServiceCollectionExtensions
16-
~Microsoft.AspNetCore.ConcurrencyLimiter.ConcurrencyLimiterMiddleware.ConcurrencyLimiterMiddleware(Microsoft.AspNetCore.Http.RequestDelegate next, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory, Microsoft.AspNetCore.ConcurrencyLimiter.IQueuePolicy queue, Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.ConcurrencyLimiter.ConcurrencyLimiterOptions> options) -> void
17-
~Microsoft.AspNetCore.ConcurrencyLimiter.ConcurrencyLimiterMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context) -> System.Threading.Tasks.Task
18-
~Microsoft.AspNetCore.ConcurrencyLimiter.ConcurrencyLimiterOptions.OnRejected.get -> Microsoft.AspNetCore.Http.RequestDelegate
19-
~Microsoft.AspNetCore.ConcurrencyLimiter.ConcurrencyLimiterOptions.OnRejected.set -> void
20-
~static Microsoft.AspNetCore.Builder.ConcurrencyLimiterExtensions.UseConcurrencyLimiter(this Microsoft.AspNetCore.Builder.IApplicationBuilder app) -> Microsoft.AspNetCore.Builder.IApplicationBuilder
21-
~static Microsoft.Extensions.DependencyInjection.QueuePolicyServiceCollectionExtensions.AddQueuePolicy(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action<Microsoft.AspNetCore.ConcurrencyLimiter.QueuePolicyOptions> configure) -> Microsoft.Extensions.DependencyInjection.IServiceCollection
22-
~static Microsoft.Extensions.DependencyInjection.QueuePolicyServiceCollectionExtensions.AddStackPolicy(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action<Microsoft.AspNetCore.ConcurrencyLimiter.QueuePolicyOptions> configure) -> Microsoft.Extensions.DependencyInjection.IServiceCollection
16+
~Microsoft.AspNetCore.ConcurrencyLimiter.ConcurrencyLimiterMiddleware.ConcurrencyLimiterMiddleware(Microsoft.AspNetCore.Http.RequestDelegate! next, Microsoft.Extensions.Logging.ILoggerFactory! loggerFactory, Microsoft.AspNetCore.ConcurrencyLimiter.IQueuePolicy! queue, Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.ConcurrencyLimiter.ConcurrencyLimiterOptions!>! options) -> void
17+
Microsoft.AspNetCore.ConcurrencyLimiter.ConcurrencyLimiterMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext! context) -> System.Threading.Tasks.Task!
18+
Microsoft.AspNetCore.ConcurrencyLimiter.ConcurrencyLimiterOptions.OnRejected.get -> Microsoft.AspNetCore.Http.RequestDelegate!
19+
Microsoft.AspNetCore.ConcurrencyLimiter.ConcurrencyLimiterOptions.OnRejected.set -> void
20+
static Microsoft.AspNetCore.Builder.ConcurrencyLimiterExtensions.UseConcurrencyLimiter(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app) -> Microsoft.AspNetCore.Builder.IApplicationBuilder!
21+
static Microsoft.Extensions.DependencyInjection.QueuePolicyServiceCollectionExtensions.AddQueuePolicy(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action<Microsoft.AspNetCore.ConcurrencyLimiter.QueuePolicyOptions!>! configure) -> Microsoft.Extensions.DependencyInjection.IServiceCollection!
22+
static Microsoft.Extensions.DependencyInjection.QueuePolicyServiceCollectionExtensions.AddStackPolicy(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action<Microsoft.AspNetCore.ConcurrencyLimiter.QueuePolicyOptions!>! configure) -> Microsoft.Extensions.DependencyInjection.IServiceCollection!

src/Middleware/ConcurrencyLimiter/src/QueuePolicies/ResettableBooleanCompletionSource.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public ValueTaskSourceStatus GetStatus(short token)
5050
return _valueTaskSource.GetStatus(token);
5151
}
5252

53-
void IValueTaskSource<bool>.OnCompleted(Action<object> continuation, object state, short token, ValueTaskSourceOnCompletedFlags flags)
53+
void IValueTaskSource<bool>.OnCompleted(Action<object?> continuation, object? state, short token, ValueTaskSourceOnCompletedFlags flags)
5454
{
5555
_valueTaskSource.OnCompleted(continuation, state, token, flags);
5656
}

src/Middleware/ConcurrencyLimiter/src/QueuePolicies/StackPolicy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.ConcurrencyLimiter
1111
internal class StackPolicy : IQueuePolicy
1212
{
1313
private readonly List<ResettableBooleanCompletionSource> _buffer;
14-
public ResettableBooleanCompletionSource _cachedResettableTCS;
14+
public ResettableBooleanCompletionSource? _cachedResettableTCS;
1515

1616
private readonly int _maxQueueCapacity;
1717
private readonly int _maxConcurrentRequests;

src/Middleware/SpaServices.Extensions/src/Microsoft.AspNetCore.SpaServices.Extensions.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<PropertyGroup>
44
<Description>Helpers for building single-page applications on ASP.NET MVC Core.</Description>
55
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
6+
<Nullable>enable</Nullable>
67
</PropertyGroup>
78

89
<ItemGroup>

src/Middleware/SpaServices.Extensions/src/Npm/NodeScriptRunner.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ namespace Microsoft.AspNetCore.NodeServices.Npm
1818
/// </summary>
1919
internal class NodeScriptRunner : IDisposable
2020
{
21-
private Process _npmProcess;
21+
private Process? _npmProcess;
2222
public EventedStreamReader StdOut { get; }
2323
public EventedStreamReader StdErr { get; }
2424

2525
private static Regex AnsiColorRegex = new Regex("\x001b\\[[0-9;]*m", RegexOptions.None, TimeSpan.FromSeconds(1));
2626

27-
public NodeScriptRunner(string workingDirectory, string scriptName, string arguments, IDictionary<string, string> envVars, string pkgManagerCommand, DiagnosticSource diagnosticSource, CancellationToken applicationStoppingToken)
27+
public NodeScriptRunner(string workingDirectory, string scriptName, string? arguments, IDictionary<string, string>? envVars, string pkgManagerCommand, DiagnosticSource diagnosticSource, CancellationToken applicationStoppingToken)
2828
{
2929
if (string.IsNullOrEmpty(workingDirectory))
3030
{
@@ -113,6 +113,8 @@ public void AttachToLogger(ILogger logger)
113113
// hence just pass it through to StdOut regardless of logger config.
114114
StdErr.OnReceivedChunk += chunk =>
115115
{
116+
Debug.Assert(chunk.Array != null);
117+
116118
var containsNewline = Array.IndexOf(
117119
chunk.Array, '\n', chunk.Offset, chunk.Count) >= 0;
118120
if (!containsNewline)
@@ -129,7 +131,7 @@ private static Process LaunchNodeProcess(ProcessStartInfo startInfo, string comm
129131
{
130132
try
131133
{
132-
var process = Process.Start(startInfo);
134+
var process = Process.Start(startInfo)!;
133135

134136
// See equivalent comment in OutOfProcessNodeInstance.cs for why
135137
process.EnableRaisingEvents = true;

src/Middleware/SpaServices.Extensions/src/Prerendering/SpaPrerenderingOptions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
using System;
77
using System.Collections.Generic;
88

9+
#nullable disable
10+
911
namespace Microsoft.AspNetCore.Builder
1012
{
1113
/// <summary>

src/Middleware/SpaServices.Extensions/src/Proxying/SpaProxy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ private static async Task PumpWebSocket(WebSocket source, WebSocket destination,
300300
{
301301
if (destination.State == WebSocketState.Open || destination.State == WebSocketState.CloseReceived)
302302
{
303-
await destination.CloseOutputAsync(source.CloseStatus.Value, source.CloseStatusDescription, cancellationToken);
303+
await destination.CloseOutputAsync(source.CloseStatus!.Value, source.CloseStatusDescription, cancellationToken);
304304
}
305305

306306
return;

0 commit comments

Comments
 (0)