diff --git a/server/generator/SockBotSubscriptionServerHealthChecks.cs b/server/generator/SockBotSubscriptionServerHealthChecks.cs index 3e9dcfe..3c897c7 100644 --- a/server/generator/SockBotSubscriptionServerHealthChecks.cs +++ b/server/generator/SockBotSubscriptionServerHealthChecks.cs @@ -63,19 +63,32 @@ namespace Sockeye.Biz { //space things out a bit to not "Hammer" out calls await Task.Delay(1000);//1 second delay between calls - //https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/health-checks?source=recommendations&view=aspnetcore-7.0 - //https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/health-checks?source=recommendations&view=aspnetcore-7.0#customize-the-http-status-code - //Basically it returns only plain text - //http status code = 200 for both Healthy and Degraded - //http status code = 503 for UnHealthy - //for our purposes anything other than 200 and "Healthy" is a problem - - var res = await client.GetAsync($"https://{srv.Name}/health"); - var responseText = await res.Content.ReadAsStringAsync(); + //https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/health-checks?source=recommendations&view=aspnetcore-7.0 + //https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/health-checks?source=recommendations&view=aspnetcore-7.0#customize-the-http-status-code + //Basically it returns only plain text + //http status code = 200 for both Healthy and Degraded + //http status code = 503 for UnHealthy + //for our purposes anything other than 200 and "Healthy" is a problem + + HttpResponseMessage res = null; + string responseText = string.Empty; + bool Failed = false; + try + { + res = await client.GetAsync($"https://{srv.Name}/health"); + responseText = await res.Content.ReadAsStringAsync(); + if (res.IsSuccessStatusCode && responseText == "Healthy") + Failed = false; + } + catch (System.Net.Http.HttpRequestException hex) + { + Failed = true; + responseText = $"Failure {hex.Message}"; + } srv.LastHealthCheck = DateTime.UtcNow; srv.LastHealthStatus = responseText; log.LogDebug($"Health check server {srv.Name} response {responseText}"); - if (res.IsSuccessStatusCode && responseText == "Healthy") + if (!Failed) { //a-ok srv.ServerState = ServerState.ActiveHealthy;