public static void ClearAllPools() { lock (Pools) { // Create separate keys list. List <string> keys = new List <string>(Pools.Count); keys.AddRange(Pools.Keys); // Remove all pools by key. foreach (string key in keys) { ClearPoolByText(key); } } if (DemotedServersTimer != null) { DemotedServersTimer.Dispose(); Hosts?.Clear(); while (!DemotedHosts.IsEmpty) { DemotedHosts.TryDequeue(out _); } } }
/// <summary> /// Remove hosts that have been on the demoted list for more /// than 120,000 milliseconds and add them to the available hosts list. /// </summary> internal static void ReleaseDemotedHosts(object state) { while (!DemotedHosts.IsEmpty) { if (DemotedHosts.TryPeek(out FailoverServer demotedServer) && demotedServer.DemotedTime.AddMilliseconds(DEMOTED_TIMEOUT) < DateTime.Now) { demotedServer.Attempted = false; Hosts?.Add(demotedServer); DemotedHosts.TryDequeue(out demotedServer); }