Re: [PATCH] Service Overload Handling (ICAP Max-Connections)

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Sun, 08 May 2011 15:46:01 +1200

On 27/04/11 23:40, Tsantilas Christos wrote:
> This patch implements the "Service Overload Handling" feature as
> described in the squid wiki page:
> http://wiki.squid-cache.org/Features/ServiceOverload
>
> This feature also exist as bug #2055 in the squid bugzilla:
> http://bugs.squid-cache.org/show_bug.cgi?id=2055
>
> More informations included in the patch preamble.
>
> Regards,
> Christos

Some relatively minor tweaks in the parse handling:

Adaptation::ServiceConfig::grokLong(
Adaptation::ServiceConfig::grokOnOverload(
Adaptation::ServiceConfig::grokBool(

  - Please use DBG_CRITICAL instead of ", 0,". Or if it is not critical
bump to an appropriate alternative (parsing errors are usually
DBG_IMPORTANT).

  - use "ERROR:", "FATAL:","WARNING:" as appropriate to the seriousness
of the config problem.

* For parsing problem debugs please just use "cfg_filename" instead of
"HERE << cfg_filename".

One *Major* problem:

   Adaptation::Icap::ServiceRep::getConnection() is missing IP
split-stack support removed from
Adaptation::Icap::Xaction::openConnection().

On systems where IPv6 sockets can be opened but the ICAP server is
IPv4-only (MacOSX, OpenBSD, Windows, manually disabled kernels) this
will fail to connect() the socket.

You will need to preserve the ipv6=on|off option behaviour. Like so:

  Ip::Address anyAddr; // default: IP6_ANY_ADDR
...
  // need a new connection
  if (!reuse) {
   if (!Ip::EnableIpv6)
     anyAddr.SetIPv4();
   else if (Ip::EnableIpv6&IPV6_SPECIAL_SPLITSTACK && !cfg().ipv6)
     /* split-stack for now requires default IPv4-only socket */
     anyAddr.SetIPv4();

   connection = comm_open(SOCK_STREAM, 0, anyAddr, COMM_NONBLOCKING,
cfg().uri.termedBuf());
   }
...

NP: the failover logics in comm_openex() are for handling sockets with
tcp_outgoing_addr pre-known. *_ANY_ADDR will never fail based on family
and so will never failover.

Amos

-- 
Please be using
   Current Stable Squid 2.7.STABLE9 or 3.1.12
   Beta testers wanted for 3.2.0.7 and 3.1.12.1
Received on Sun May 08 2011 - 03:46:09 MDT

This archive was generated by hypermail 2.2.0 : Mon May 09 2011 - 12:00:03 MDT