public IgnoreFailedEndpointsPolicy(List <Uri> endpoints, TimeSpan failedEndpointExpiryInterval, IEndpointIgnorePolicy innerPolicy = null) { _failedEndpointExpiryInterval = failedEndpointExpiryInterval; _innerPolicy = innerPolicy; _innerPolicyLockObj = new object(); PopulateEndpoints(endpoints); }
public IgnoreFailedEndpointsPolicy(List<Uri> endpoints, TimeSpan failedEndpointExpiryInterval, IEndpointIgnorePolicy innerPolicy = null) { _failedEndpointExpiryInterval = failedEndpointExpiryInterval; _innerPolicy = innerPolicy; _innerPolicyLockObj = new object(); PopulateEndpoints(endpoints); }
internal Uri ChooseEndpointRoundRobin(IEndpointIgnorePolicy policy) { Uri chosenEndpoint; int attemptCounter = 0; do { chosenEndpoint = _allEndpoints[_endpointIndex++ % _allEndpoints.Length]; attemptCounter++; if (attemptCounter >= _allEndpoints.Length) { Trace.TraceWarning("All endpoints were ignored by the policy. Avoiding further skipping....."); break; } } while (policy.ShouldIgnoreEndpoint(chosenEndpoint)); Debug.WriteLine("Endpoint {0} chosen for the request", chosenEndpoint); return(chosenEndpoint); }
private void InitializeEndpoints(List <string> regionServerHostNames) { Random rnd = new Random(); lockObj = new object(); var endpointsList = new List <Uri>(); _endpointIndex = rnd.Next(); foreach (var server in regionServerHostNames) { var candidate = string.Format("http://{0}:{1}", server, _workerRestEndpointPort); endpointsList.Add(new Uri(candidate)); } _allEndpoints = endpointsList.OrderBy(x => rnd.Next()).ToArray(); _endpointIgnorePolicy = new IgnoreFailedEndpointsPolicy(endpointsList, _refreshInterval); }