Skip to content

Commit

Permalink
BUG/MINOR: server: make sure the HMAINT state is part of MAINT
Browse files Browse the repository at this point in the history
In 1.8 when adding "set server fqdn" with commit b418c12 ("MINOR:
server: cli: Add server FQDNs to server-state file and stats socket."),
the HMAINT flag was not made part of the MAINT ones, so technically
speaking when changing the FQDN, the server is not completely considered
as in maintenance mode.

In its defense, the code location around that was completely messy, with
the aggregator flag being hidden between other values and purposely but
discretely ignoring one of the flags, so the comments were updated to
make the intent clearer (particularly regarding CMAINT which looked like
it was also forgotten while it was on purpose).

This can be backported anywhere.

(cherry picked from commit a4d04c6)
Signed-off-by: Christopher Faulet <[email protected]>
(cherry picked from commit f882ef8)
Signed-off-by: Christopher Faulet <[email protected]>
(cherry picked from commit 426d8f7)
Signed-off-by: Christopher Faulet <[email protected]>
  • Loading branch information
wtarreau authored and capflam committed Oct 1, 2024
1 parent f017196 commit fe6cac1
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions include/haproxy/server-t.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,14 @@ enum srv_state {
enum srv_admin {
SRV_ADMF_FMAINT = 0x01, /* the server was explicitly forced into maintenance */
SRV_ADMF_IMAINT = 0x02, /* the server has inherited the maintenance status from a tracked server */
SRV_ADMF_MAINT = 0x23, /* mask to check if any maintenance flag is present */
SRV_ADMF_CMAINT = 0x04, /* the server is in maintenance because of the configuration */
SRV_ADMF_CMAINT = 0x04, /* the server is in maintenance because of the configuration (separate) */
SRV_ADMF_FDRAIN = 0x08, /* the server was explicitly forced into drain state */
SRV_ADMF_IDRAIN = 0x10, /* the server has inherited the drain status from a tracked server */
SRV_ADMF_DRAIN = 0x18, /* mask to check if any drain flag is present */
SRV_ADMF_RMAINT = 0x20, /* the server is down because of an IP address resolution failure */
SRV_ADMF_HMAINT = 0x40, /* the server FQDN has been set from socket stats */

SRV_ADMF_MAINT = 0x63, /* mask to check if any maintenance flag except CMAINT is present */
} __attribute__((packed));

/* options for servers' "init-addr" parameter
Expand Down

0 comments on commit fe6cac1

Please sign in to comment.