From 0feb115652b12e541c6645fda38a67442190fb04 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Fri, 7 Mar 2025 06:18:25 +0800 Subject: [PATCH 1/3] Remove old dotnet-core feed --- nuget.config | 1 - 1 file changed, 1 deletion(-) diff --git a/nuget.config b/nuget.config index e4d73b867..d5ff7157f 100644 --- a/nuget.config +++ b/nuget.config @@ -3,7 +3,6 @@ - From 00a6a5e3c0d61e7079a57fb426f7e2231da997f4 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Fri, 7 Mar 2025 06:33:52 +0800 Subject: [PATCH 2/3] Improve logging --- .../Balancer/ConnectivityStateTests.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/test/Grpc.Net.Client.Tests/Balancer/ConnectivityStateTests.cs b/test/Grpc.Net.Client.Tests/Balancer/ConnectivityStateTests.cs index 9b9d60ea4..621f042c7 100644 --- a/test/Grpc.Net.Client.Tests/Balancer/ConnectivityStateTests.cs +++ b/test/Grpc.Net.Client.Tests/Balancer/ConnectivityStateTests.cs @@ -1,4 +1,4 @@ -#region Copyright notice and license +#region Copyright notice and license // Copyright 2019 The gRPC Authors // @@ -29,6 +29,7 @@ using Grpc.Net.Client.Tests.Infrastructure.Balancer; using Grpc.Tests.Shared; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using NUnit.Framework; namespace Grpc.Net.Client.Tests.Balancer; @@ -52,11 +53,13 @@ public async Task ResolverReturnsNoAddresses_CallWithWaitForReady_Wait() }); var services = new ServiceCollection(); + services.AddNUnitLogger(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(new TestSubchannelTransportFactory()); var serviceProvider = services.BuildServiceProvider(); + var logger = serviceProvider.GetRequiredService>(); var invoker = HttpClientCallInvokerFactory.Create(testMessageHandler, "test:///localhost", configure: o => { o.Credentials = ChannelCredentials.Insecure; @@ -72,6 +75,8 @@ public async Task ResolverReturnsNoAddresses_CallWithWaitForReady_Wait() Assert.IsNull(authority); var resolver = serviceProvider.GetRequiredService(); + + logger.LogInformation("UpdateAddresses"); resolver.UpdateAddresses(new List { new BalancerAddress("localhost", 81) From 4113c30ff631e26973de60899bae4fe3f734bed8 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Fri, 7 Mar 2025 07:06:10 +0800 Subject: [PATCH 3/3] Fix test --- test/Shared/TestResolver.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/test/Shared/TestResolver.cs b/test/Shared/TestResolver.cs index 8136f981b..c6584d219 100644 --- a/test/Shared/TestResolver.cs +++ b/test/Shared/TestResolver.cs @@ -32,6 +32,7 @@ namespace Grpc.Tests.Shared; internal class TestResolver : PollingResolver { + private readonly object _lock; private readonly Func? _onRefreshAsync; private readonly TaskCompletionSource _hasResolvedTcs; private readonly ILogger _logger; @@ -45,6 +46,7 @@ public TestResolver(ILoggerFactory loggerFactory) : this(loggerFactory, null) public TestResolver(ILoggerFactory? loggerFactory = null, Func? onRefreshAsync = null) : base(loggerFactory ?? NullLoggerFactory.Instance) { + _lock = new object(); _onRefreshAsync = onRefreshAsync; _hasResolvedTcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); _logger = (ILogger?)loggerFactory?.CreateLogger() ?? NullLogger.Instance; @@ -64,8 +66,11 @@ public void UpdateError(Status status) public void UpdateResult(ResolverResult result) { - _result = result; - Listener?.Invoke(result); + lock (_lock) + { + _result = result; + Listener?.Invoke(result); + } } protected override async Task ResolveAsync(CancellationToken cancellationToken) @@ -75,7 +80,10 @@ protected override async Task ResolveAsync(CancellationToken cancellationToken) await _onRefreshAsync(); } - Listener(_result ?? ResolverResult.ForResult(Array.Empty(), serviceConfig: null, serviceConfigStatus: null)); + lock (_lock) + { + Listener(_result ?? ResolverResult.ForResult(Array.Empty(), serviceConfig: null, serviceConfigStatus: null)); + } _hasResolvedTcs.TrySetResult(null); } }