mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 06:11:32 +02:00
MINOR: server: add SRV_F_DELETED flag
Set the SRV_F_DELETED flag when server is removed from the cli. When removing a server from the cli (in cli_parse_delete_server()), we update the "visible" server list so that the removed server is no longer part of the list. However, despite the server being removed from "visible" server list, one could still access the server data from a valid ptr (ie: srv_take()) Deleted flag helps detecting when a server is in transient removal state: that is, removed from the list, thus not visible but not yet purged from memory.
This commit is contained in:
parent
8019f78326
commit
75b9d1c041
@ -150,6 +150,7 @@ enum srv_initaddr {
|
|||||||
#define SRV_F_DYNAMIC 0x1000 /* dynamic server instantiated at runtime */
|
#define SRV_F_DYNAMIC 0x1000 /* dynamic server instantiated at runtime */
|
||||||
#define SRV_F_NON_PURGEABLE 0x2000 /* this server cannot be removed at runtime */
|
#define SRV_F_NON_PURGEABLE 0x2000 /* this server cannot be removed at runtime */
|
||||||
#define SRV_F_DEFSRV_USE_SSL 0x4000 /* default-server uses SSL */
|
#define SRV_F_DEFSRV_USE_SSL 0x4000 /* default-server uses SSL */
|
||||||
|
#define SRV_F_DELETED 0x8000 /* srv is deleted but not yet purged */
|
||||||
|
|
||||||
/* configured server options for send-proxy (server->pp_opts) */
|
/* configured server options for send-proxy (server->pp_opts) */
|
||||||
#define SRV_PP_V1 0x0001 /* proxy protocol version 1 */
|
#define SRV_PP_V1 0x0001 /* proxy protocol version 1 */
|
||||||
|
@ -5107,6 +5107,15 @@ static int cli_parse_delete_server(char **args, char *payload, struct appctx *ap
|
|||||||
/* remove srv from idle_node tree for idle conn cleanup */
|
/* remove srv from idle_node tree for idle conn cleanup */
|
||||||
eb32_delete(&srv->idle_node);
|
eb32_delete(&srv->idle_node);
|
||||||
|
|
||||||
|
/* flag the server as deleted
|
||||||
|
* (despite the server being removed from primary server list,
|
||||||
|
* one could still access the server data from a valid ptr)
|
||||||
|
* Deleted flag helps detecting when a server is in transient removal
|
||||||
|
* state.
|
||||||
|
* ie: removed from the list but not yet freed/purged from memory.
|
||||||
|
*/
|
||||||
|
srv->flags |= SRV_F_DELETED;
|
||||||
|
|
||||||
/* set LSB bit (odd bit) for reuse_cnt */
|
/* set LSB bit (odd bit) for reuse_cnt */
|
||||||
srv_id_reuse_cnt |= 1;
|
srv_id_reuse_cnt |= 1;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user