Skip to content

Commit 868adfe

Browse files
authored
Various fixes recommended by analysis (#1498)
1 parent f5e4ad7 commit 868adfe

File tree

10 files changed

+24
-25
lines changed

10 files changed

+24
-25
lines changed

src/Grpc.AspNetCore.Server/Internal/HttpContextStreamReader.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,7 @@ public HttpContextStreamReader(HttpContextServerCallContext serverCallContext, F
3333
_deserializer = deserializer;
3434
}
3535

36-
// IAsyncStreamReader<T> should declare Current as nullable
37-
// Suppress warning when overriding interface definition
38-
#pragma warning disable CS8613, CS8766 // Nullability of reference types in return type doesn't match implicitly implemented member.
39-
public TRequest? Current { get; private set; }
40-
#pragma warning restore CS8613, CS8766 // Nullability of reference types in return type doesn't match implicitly implemented member.
36+
public TRequest Current { get; private set; } = default!;
4137

4238
public void Dispose() { }
4339

@@ -74,7 +70,7 @@ private bool ProcessPayload(TRequest? request)
7470
// Stream is complete
7571
if (request == null)
7672
{
77-
Current = null;
73+
Current = null!;
7874
return false;
7975
}
8076

src/Grpc.AspNetCore.Server/Model/Internal/ServiceRouteBuilder.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,8 @@ internal static void CreateUnimplementedEndpoints(
140140

141141
private static IEndpointConventionBuilder CreateUnimplementedEndpoint(IEndpointRouteBuilder endpointRouteBuilder, string pattern, string displayName, RequestDelegate requestDelegate)
142142
{
143-
#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
144143
// https://github.com/dotnet/aspnetcore/issues/24042
145144
var routePattern = RoutePatternFactory.Parse(pattern, defaults: null, new { contentType = GrpcUnimplementedConstraint.Instance });
146-
#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type.
147145
var endpointBuilder = endpointRouteBuilder.Map(routePattern, requestDelegate);
148146

149147
endpointBuilder.Add(ep =>

src/Grpc.Net.Client/Balancer/BalancerAttributes.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public bool TryGetValue<TValue>(BalancerAttributesKey<TValue> key, [MaybeNullWhe
9999
return true;
100100
}
101101

102-
value = default(TValue);
102+
value = default;
103103
return false;
104104
}
105105

src/Grpc.Net.Client/Balancer/DnsResolver.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,12 @@ protected override async Task ResolveAsync(CancellationToken cancellationToken)
107107
}
108108

109109
DnsResolverLog.StartingDnsQuery(_logger, _dnsAddress);
110-
var addresses = await Dns.GetHostAddressesAsync(_dnsAddress).ConfigureAwait(false);
110+
var addresses =
111+
#if NET6_0_OR_GREATER
112+
await Dns.GetHostAddressesAsync(_dnsAddress, cancellationToken).ConfigureAwait(false);
113+
#else
114+
await Dns.GetHostAddressesAsync(_dnsAddress).ConfigureAwait(false);
115+
#endif
111116

112117
DnsResolverLog.ReceivedDnsResults(_logger, addresses.Length, _dnsAddress, addresses);
113118

src/Grpc.Net.Client/Balancer/Resolver.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ namespace Grpc.Net.Client.Balancer
4848
/// </summary>
4949
public abstract class Resolver : IDisposable
5050
{
51-
private Task _resolveTask = Task.CompletedTask;
51+
// Internal for testing
52+
internal Task _resolveTask = Task.CompletedTask;
5253
private Action<ResolverResult>? _listener;
5354
private bool _disposed;
5455

src/Grpc.Net.Client/Internal/HttpContentClientStreamReader.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,7 @@ public HttpContentClientStreamReader(GrpcCall<TRequest, TResponse> call)
5050
HttpResponseTcs = new TaskCompletionSource<(HttpResponseMessage, Status?)>(TaskCreationOptions.RunContinuationsAsynchronously);
5151
}
5252

53-
// IAsyncStreamReader<T> should declare Current as nullable
54-
// Suppress warning when overriding interface definition
55-
#pragma warning disable CS8613, CS8766 // Nullability of reference types in return type doesn't match implicitly implemented member.
56-
public TResponse? Current { get; private set; }
57-
#pragma warning restore CS8613, CS8766 // Nullability of reference types in return type doesn't match implicitly implemented member.
53+
public TResponse Current { get; private set; } = default!;
5854

5955
public void Dispose()
6056
{
@@ -156,12 +152,13 @@ private async Task<bool> MoveNextCore(CancellationToken cancellationToken)
156152

157153
CompatibilityHelpers.Assert(_grpcEncoding != null, "Encoding should have been calculated from response.");
158154

159-
Current = await _call.ReadMessageAsync(
155+
var readMessage = await _call.ReadMessageAsync(
160156
_responseStream,
161157
_grpcEncoding,
162158
singleMessage: false,
163159
_call.CancellationToken).ConfigureAwait(false);
164-
if (Current == null)
160+
161+
if (readMessage == null)
165162
{
166163
// No more content in response so report status to call.
167164
// The call will handle finishing the response.
@@ -172,10 +169,12 @@ private async Task<bool> MoveNextCore(CancellationToken cancellationToken)
172169
throw _call.CreateFailureStatusException(status);
173170
}
174171

172+
Current = null!;
175173
return false;
176174
}
177175

178176
GrpcEventSource.Log.MessageReceived();
177+
Current = readMessage!;
179178
return true;
180179
}
181180
catch (OperationCanceledException ex)

test/FunctionalTests/Balancer/DnsResolverTests.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,8 @@ public async Task RefreshAsync_MultipleCalls_HitRateLimit()
140140
var result = await tcs.Task.DefaultTimeout();
141141
Assert.Greater(result.Addresses!.Count, 0);
142142

143+
// Wait for the internal resolve task to be completed before triggering refresh again
144+
await dnsResolver._resolveTask.DefaultTimeout();
143145
tcs = new TaskCompletionSource<ResolverResult>(TaskCreationOptions.RunContinuationsAsynchronously);
144146
dnsResolver.Refresh();
145147

@@ -179,6 +181,8 @@ public async Task RefreshAsync_MultipleCallsThenCancellation_CallCanceled()
179181
var result = await tcs.Task.DefaultTimeout();
180182
Assert.Greater(result.Addresses!.Count, 0);
181183

184+
// Wait for the internal resolve task to be completed before triggering refresh again
185+
await dnsResolver._resolveTask.DefaultTimeout();
182186
tcs = new TaskCompletionSource<ResolverResult>(TaskCreationOptions.RunContinuationsAsynchronously);
183187
dnsResolver.Refresh();
184188

test/FunctionalTests/Linker/LinkerTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public async Task RunWebsiteAndCallWithClient_Success()
8383
}
8484
}
8585

86-
private void EnsureDeleted(string path)
86+
private static void EnsureDeleted(string path)
8787
{
8888
if (Directory.Exists(path))
8989
{

test/Grpc.AspNetCore.Server.Tests/Reflection/ReflectionGrpcServiceActivatorTests.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,7 @@ private class GreeterService : Greeter.GreeterBase
135135

136136
private class TestAsyncStreamReader : IAsyncStreamReader<ServerReflectionRequest>
137137
{
138-
// IAsyncStreamReader<T> should declare Current as nullable
139-
// Suppress warning when overriding interface definition
140-
#pragma warning disable CS8613, CS8766 // Nullability of reference types in return type doesn't match implicitly implemented member.
141-
public ServerReflectionRequest? Current { get; set; }
142-
#pragma warning restore CS8613, CS8766 // Nullability of reference types in return type doesn't match implicitly implemented member.
138+
public ServerReflectionRequest Current { get; set; } = default!;
143139
private bool _hasNext = true;
144140

145141
public void Dispose()

test/Grpc.Net.Client.Tests/GrpcChannelTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,7 @@ public async Task ConnectAsync_ShiftThroughStates_CompleteOnReady()
680680
Assert.AreEqual(ConnectivityState.Shutdown, channel.State);
681681
}
682682

683-
private async Task WaitForStateAsync(GrpcChannel channel, ConnectivityState state)
683+
private static async Task WaitForStateAsync(GrpcChannel channel, ConnectivityState state)
684684
{
685685
while (true)
686686
{

0 commit comments

Comments
 (0)