MINOR: config: new global section directive: server-state-file

This new global section directive is used to store the path to the file
where HAProxy will be able to retrieve server states across reloads.

The file pointed by this path is used to store a file which can contains
state of all servers from all backends.
This commit is contained in:
Baptiste Assmann 2015-08-23 09:54:31 +02:00 committed by Willy Tarreau
parent 5626f489ec
commit e0882263e0
2 changed files with 16 additions and 0 deletions

View File

@ -130,6 +130,7 @@ struct global {
struct list logsrvs;
char *log_send_hostname; /* set hostname in syslog header */
char *server_state_base; /* path to a directory where server state files can be found */
char *server_state_file; /* path to the file where server states are loaded from */
struct {
int maxpollevents; /* max number of poll events at once */
int maxaccept; /* max number of consecutive accept() */

View File

@ -1660,6 +1660,21 @@ int cfg_parse_global(const char *file, int linenum, char **args, int kwm)
global.server_state_base = strdup(args[1]);
}
else if (!strcmp(args[0], "server-state-file")) { /* path to the file where HAProxy can load the server states */
if (global.server_state_file != NULL) {
Alert("parsing [%s:%d] : '%s' already specified. Continuing.\n", file, linenum, args[0]);
err_code |= ERR_ALERT;
goto out;
}
if (!*(args[1])) {
Alert("parsing [%s:%d] : '%s' expect one argument: a file path.\n", file, linenum, args[0]);
err_code |= ERR_FATAL;
goto out;
}
global.server_state_file = strdup(args[1]);
}
else if (!strcmp(args[0], "log-tag")) { /* tag to report to syslog */
if (alertif_too_many_args(1, file, linenum, args, &err_code))
goto out;