Exemplo n.º 1
0
        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 _);
                }
            }
        }
Exemplo n.º 2
0
 /// <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);
         }