in src/Microsoft.Azure.SignalR.Management/HubInstanceFactories/RestHealthCheckService.cs [63:92]
private async Task CheckEndpointHealthAsync()
{
if (_serviceEndpointManager.Endpoints.Count > 1 || _enabledForSingleEndpoint ||
// If there is only one unhealthy endpoint, we still need to check its health to give it a chance to become healthy again.
_serviceEndpointManager.Endpoints.Any(e => !e.Key.Online))
{
await Task.WhenAll(_serviceEndpointManager.GetEndpoints(_hubName).Select(async endpoint =>
{
var retry = 0;
var isHealthy = false;
bool needRetry;
do
{
isHealthy = await IsServiceHealthy(endpoint);
needRetry = !isHealthy && retry < MaxRetries;
if (needRetry)
{
Log.WillRetryHealthCheck(_logger, endpoint.Endpoint, _retryInterval);
await Task.Delay(_retryInterval);
}
retry++;
} while (needRetry);
endpoint.Online = isHealthy;
if (!isHealthy)
{
Log.RestHealthCheckFailed(_logger, endpoint.Endpoint);
}
}));
}
}