diff --git a/src/Configuration/src/ConfigServer/ConfigServerConfigurationProvider.cs b/src/Configuration/src/ConfigServer/ConfigServerConfigurationProvider.cs index cbb723915d..7963604378 100644 --- a/src/Configuration/src/ConfigServer/ConfigServerConfigurationProvider.cs +++ b/src/Configuration/src/ConfigServer/ConfigServerConfigurationProvider.cs @@ -725,9 +725,7 @@ internal async Task RefreshVaultTokenAsync(CancellationToken cancellationToken) Uri uri = GetVaultRenewUri(); HttpRequestMessage message = await GetVaultRenewRequestMessageAsync(uri, cancellationToken); - _logger.LogInformation("Renewing Vault token {Token} for {Ttl} milliseconds at Uri {Uri}", obscuredToken, ClientOptions.TokenTtl, - uri.ToMaskedString()); - + _logger.LogDebug("Renewing Vault token {Token} for {Ttl} milliseconds at Uri {Uri}", obscuredToken, ClientOptions.TokenTtl, uri.ToMaskedString()); using HttpResponseMessage response = await httpClient.SendAsync(message, cancellationToken); if (response.StatusCode != HttpStatusCode.OK) diff --git a/src/Discovery/test/HttpClients.Test/LoadBalancers/RoundRobinLoadBalancerTest.cs b/src/Discovery/test/HttpClients.Test/LoadBalancers/RoundRobinLoadBalancerTest.cs index 08f9e920a5..0f41aab316 100644 --- a/src/Discovery/test/HttpClients.Test/LoadBalancers/RoundRobinLoadBalancerTest.cs +++ b/src/Discovery/test/HttpClients.Test/LoadBalancers/RoundRobinLoadBalancerTest.cs @@ -246,8 +246,8 @@ private sealed class TestServiceInstance(Uri uri) : IServiceInstance public int Port => throw new NotImplementedException(); public bool IsSecure => throw new NotImplementedException(); public Uri Uri { get; } = uri; - public Uri? NonSecureUri => throw new NotImplementedException(); - public Uri? SecureUri => throw new NotImplementedException(); + public Uri NonSecureUri => throw new NotImplementedException(); + public Uri SecureUri => throw new NotImplementedException(); public IReadOnlyDictionary Metadata => throw new NotImplementedException(); } diff --git a/src/Management/src/Endpoint/SpringBootAdminClient/SpringBootAdminPeriodicRefresh.cs b/src/Management/src/Endpoint/SpringBootAdminClient/SpringBootAdminPeriodicRefresh.cs index f2cf82a106..40139c7c9b 100644 --- a/src/Management/src/Endpoint/SpringBootAdminClient/SpringBootAdminPeriodicRefresh.cs +++ b/src/Management/src/Endpoint/SpringBootAdminClient/SpringBootAdminPeriodicRefresh.cs @@ -40,6 +40,7 @@ private async Task TimerLoopAsync(TimeSpan interval) try { _logger.LogDebug("Starting periodic refresh loop with interval {Interval}.", interval); + bool isFirstTime = true; do { @@ -47,12 +48,14 @@ private async Task TimerLoopAsync(TimeSpan interval) try { - await _runner.RunAsync(_timerTokenSource.Token); + await _runner.RunAsync(isFirstTime, _timerTokenSource.Token); } catch (Exception exception) when (!exception.IsCancellation()) { _logger.LogWarning(exception, "Refresh cycle failed."); } + + isFirstTime = false; } while (await _periodicTimer.WaitForNextTickAsync(_timerTokenSource.Token)); } diff --git a/src/Management/src/Endpoint/SpringBootAdminClient/SpringBootAdminRefreshRunner.cs b/src/Management/src/Endpoint/SpringBootAdminClient/SpringBootAdminRefreshRunner.cs index 4f1ce42ff5..eaf7784216 100644 --- a/src/Management/src/Endpoint/SpringBootAdminClient/SpringBootAdminRefreshRunner.cs +++ b/src/Management/src/Endpoint/SpringBootAdminClient/SpringBootAdminRefreshRunner.cs @@ -54,7 +54,7 @@ public SpringBootAdminRefreshRunner(AppUrlCalculator appUrlCalculator, SpringBoo _logger = logger; } - public async Task RunAsync(CancellationToken cancellationToken) + public async Task RunAsync(bool isFirstTime, CancellationToken cancellationToken) { _logger.LogDebug("Validating options."); SpringBootAdminClientOptions clientOptions = _clientOptionsMonitor.CurrentValue; @@ -66,7 +66,7 @@ public async Task RunAsync(CancellationToken cancellationToken) await SafeUnregisterAsync(_lastGoodOptions, cancellationToken); } - await RegisterAsync(clientOptions, cancellationToken); + await RegisterAsync(clientOptions, isFirstTime, cancellationToken); } private void ValidateAndSetOptions(SpringBootAdminClientOptions options) @@ -124,11 +124,19 @@ private void ValidateAndSetOptions(SpringBootAdminClientOptions options) } } - private async Task RegisterAsync(SpringBootAdminClientOptions clientOptions, CancellationToken cancellationToken) + private async Task RegisterAsync(SpringBootAdminClientOptions clientOptions, bool isFirstTime, CancellationToken cancellationToken) { Application app = CreateApplication(new Uri(clientOptions.BaseUrl!), clientOptions); - _logger.LogInformation("Registering with Spring Boot Admin Server at {Url}.", clientOptions.Url); + if (isFirstTime) + { + _logger.LogInformation("Registering with Spring Boot Admin Server at {Url}.", clientOptions.Url); + } + else + { + _logger.LogDebug("Registering with Spring Boot Admin Server at {Url}.", clientOptions.Url); + } + _lastRegistrationId = await _springBootAdminApiClient.RegisterAsync(app, clientOptions, cancellationToken); _lastGoodOptions = clientOptions; } @@ -175,7 +183,7 @@ private async Task SafeUnregisterAsync(SpringBootAdminClientOptions clientOption { try { - _logger.LogInformation("Unregistering from Spring Boot Admin Server at {Url}.", clientOptions.Url); + _logger.LogDebug("Unregistering from Spring Boot Admin Server at {Url}.", clientOptions.Url); await _springBootAdminApiClient.UnregisterAsync(_lastRegistrationId, clientOptions, cancellationToken); _lastRegistrationId = null; } diff --git a/src/Management/test/Endpoint.Test/SpringBootAdminClient/SpringBootAdminRefreshRunnerTest.cs b/src/Management/test/Endpoint.Test/SpringBootAdminClient/SpringBootAdminRefreshRunnerTest.cs index 9761d19fe4..c1349cdbd7 100644 --- a/src/Management/test/Endpoint.Test/SpringBootAdminClient/SpringBootAdminRefreshRunnerTest.cs +++ b/src/Management/test/Endpoint.Test/SpringBootAdminClient/SpringBootAdminRefreshRunnerTest.cs @@ -83,7 +83,7 @@ public async Task BindsConfiguration() app.Services.GetRequiredService().Using(handler); var runner = app.Services.GetRequiredService(); - await runner.RunAsync(TestContext.Current.CancellationToken); + await runner.RunAsync(true, TestContext.Current.CancellationToken); SpringBootAdminClientOptions? options = runner.LastGoodOptions; options.Should().NotBeNull(); @@ -116,7 +116,7 @@ public async Task FailsOnMissingConfiguration() await using WebApplication app = builder.Build(); var runner = app.Services.GetRequiredService(); - Func action = async () => await runner.RunAsync(TestContext.Current.CancellationToken); + Func action = async () => await runner.RunAsync(true, TestContext.Current.CancellationToken); string[] errorsExpected = [ @@ -145,7 +145,7 @@ public async Task FailsOnInvalidConfiguration() await using WebApplication app = builder.Build(); var runner = app.Services.GetRequiredService(); - Func action = async () => await runner.RunAsync(TestContext.Current.CancellationToken); + Func action = async () => await runner.RunAsync(true, TestContext.Current.CancellationToken); string[] errorsExpected = [ @@ -175,7 +175,7 @@ public async Task FailsWhenConfigurationForBasePathIsUrl() await using WebApplication app = builder.Build(); var runner = app.Services.GetRequiredService(); - Func action = async () => await runner.RunAsync(TestContext.Current.CancellationToken); + Func action = async () => await runner.RunAsync(true, TestContext.Current.CancellationToken); await action.Should().ThrowExactlyAsync() .WithMessage("Use BaseUrl instead of BasePath to configure the absolute URL to register with"); @@ -202,7 +202,7 @@ public async Task BindsApplicationNameFromSpringConfiguration() app.Services.GetRequiredService().Using(handler); var runner = app.Services.GetRequiredService(); - await runner.RunAsync(TestContext.Current.CancellationToken); + await runner.RunAsync(true, TestContext.Current.CancellationToken); SpringBootAdminClientOptions? options = runner.LastGoodOptions; options.Should().NotBeNull(); @@ -249,7 +249,7 @@ public async Task SendsRegisterRequestForDefaultConfiguration() app.Services.GetRequiredService().Using(handler); var runner = app.Services.GetRequiredService(); - await runner.RunAsync(TestContext.Current.CancellationToken); + await runner.RunAsync(true, TestContext.Current.CancellationToken); runner.LastRegistrationId.Should().Be("1234567"); runner.LastGoodOptions.Should().NotBeNull(); @@ -301,7 +301,7 @@ public async Task SendsRegisterRequestForCustomConfiguration() app.Services.GetRequiredService().Using(handler); var runner = app.Services.GetRequiredService(); - await runner.RunAsync(TestContext.Current.CancellationToken); + await runner.RunAsync(true, TestContext.Current.CancellationToken); runner.LastRegistrationId.Should().Be("1234567"); runner.LastGoodOptions.Should().NotBeNull();