private async Task CheckEndpointHealthAsync()

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);
                    }
                }));
            }
        }