Hi,

this series comprises of several components

A. Patches 0-1 are cleanup patches

  DOC: Clarify documentation of option lb-agent-chk
  CLEANUP: Make parameters of srv_downtime and srv_getinter const

B. Patches 2 - 12 add support for a secondary agent health check

   In this mode, a non-agent health check is run as the primary
   health check and a secondary agent health check is also run.

  MEDIUM: Split up struct server's check element
  MEDIUM: Move {,fast,down}inter to struct check
  MEDIUM: Move result element to struct check
  MEDIUM: Paramatise functions over the check of a server
  MEDIUM: cfgparse: Factor out check initialisation
  MEDIUM: Add state to struct check
  MEDIUM: Add name element to struct check
  MEDIUM: Move health element to struct check
  MEDIUM: Add helper for task creation for checks
  MEDIUM: checks: Add supplementary agent checks


C. Patches 13 - 15 add support for the agent-hdr option to http-check.

   This allows agent information to be passed in the HTTP header
   returned as part of an http check. In this way an HTTP health
   check and an agent check can be run simultaneously as part
   of the same health check.

  MEDIUM: Add helper for agent check events.
  MEDIUM: Parser to allow matching of HTTP header
  MEDIUM: Add http-check agent-hdr option

D. Patches 16 - 20 enhance the behaviour of agent checks.

   These behavioural changes were requested by loadbalancer.org.
   They reflect differences be their desired implementation and
   my supplied implementation and solutions to problems they
   encountered during testing.

  MEDIUM: Add DRAIN state and report it on the stats page
  MEDIUM: Log agent fail, stopped or down as info
  MEDIUM: Do not mark a server as down if the agent is unavailable
  MEDIUM: Set rise and fall of agent checks to 1
  MEDIUM: Add set agent pause|unpause unix socket command

E. Patches 21 - 23 add support for checking using an external short-lived
+process

   This is not strictly related to the agent health check work,
   but common code paths are touched making many of the preceding
   patches dependencies for the external health check patches.

  MEDIUM: Break out check establishment into establish_chk()
  MEDIUM: Add external check


Key Changes since v4 (posted on the 20th July)

* Move the initialisation of the type field of struct check
  into init_check(). This means that it is uninitialised for server->agent
  if agent-port is not set and thus a task for the agent check will not be
  erroneously started start_checks().


Base

Based on 276fae9ab95a9addf6b867c78903d31ab4da8d3a
("MINOR: samples: add the http_date([<offset>]) sample converter."),
which is 21 commits after v1.5-dev19.


Availability

To aid review I have made this series available in git at:
https://github.com/horms/haproxy.git agent-check-20130729


Overall Diffstat:

 doc/configuration.txt     |  138 ++++-
 include/common/defaults.h |    2 +
 include/proto/checks.h    |    4 +-
 include/proto/server.h    |    4 +-
 include/types/checks.h    |    4 +
 include/types/proxy.h     |    3 +
 include/types/server.h    |   69 ++-
 src/cfgparse.c            |  222 ++++++--
 src/checks.c              | 1315 +++++++++++++++++++++++++++++++--------------
 src/dumpstats.c           |   55 +-
 src/haproxy.c             |    6 +
 src/proto_http.c          |    6 +-
 src/server.c              |   16 +-
 13 files changed, 1322 insertions(+), 522 deletions(-)

-- 
1.8.3.2


Reply via email to