[squid-dev] [RFC] Do not use idle dead peers

Alex Rousskov rousskov at measurement-factory.com
Tue Mar 21 21:27:25 UTC 2017


Hello,

    This Request For Comments proposes to remove a subtle Squid
(mis)feature. If you happen to use the corresponding feature, please
speak up to protect it! If nobody defends this feature, we may remove it
(in order to get rid of its bad side effects).

The feature can be summarized as follows: Since 2004 (trunk r6631),
Squid may forward an HTTP request to a dead peer that was idle for some
time. If there were no failures for a while then perhaps the peer is not
dead anymore? Let's try using it for the current HTTP transaction and
see what happens. If we are lucky, we will start using the peer sooner!..


The details of the feature, its negative side effects, and expected
removal impact, are all discussed on squid-users:

http://lists.squid-cache.org/pipermail/squid-users/2017-March/014785.html


Here, I can post the gist of the proposed change for those who want to
look at the affected code:

>  /// OK to add this peer to the list of possible request destinations?
>  bool
>  neighborUp(const CachePeer *p)
>  {
>      if (!p->tcp_up) { // the peer is DEAD
> -        if (!peerProbeConnect(p))
> +        peerProbeConnect(p);
>              return false;
>      }
>  
>      if (p->options.no_query)
>          return true; // yes, add this peer


The above diff is just a sketch and more code polishing is needed to
fully remove this feature, of course.

Does anybody need this "use idle dead peers" feature?


Thank you,

Alex.
P.S. Please resist the temptation to discuss other peering problems on
this thread, including other problems associated with detection and
revival of dead peers. Let's focus on this specific feature proposed for
removal.


More information about the squid-dev mailing list