MEDIUM: stats: add the ability to kill sessions from the admin interface
It was not possible to kill remaining sessions from the admin interface, which is annoying especially when switching to maintenance mode. Now it's possible.
This commit is contained in:
parent
d72822442d
commit
4f8a83cb6e
|
@ -264,6 +264,7 @@ enum {
|
|||
ST_ADM_ACTION_ENABLE,
|
||||
ST_ADM_ACTION_STOP,
|
||||
ST_ADM_ACTION_START,
|
||||
ST_ADM_ACTION_SHUTDOWN,
|
||||
};
|
||||
|
||||
/* status codes available for the stats admin page */
|
||||
|
|
|
@ -3173,6 +3173,7 @@ static int stats_dump_proxy(struct stream_interface *si, struct proxy *px, struc
|
|||
"<option value=\"enable\">Enable</option>"
|
||||
"<option value=\"stop\">Soft Stop</option>"
|
||||
"<option value=\"start\">Soft Start</option>"
|
||||
"<option value=\"shutdown\">Kill Sessions</option>"
|
||||
"</select>"
|
||||
"<input type=\"hidden\" name=\"b\" value=\"#%d\">"
|
||||
" <input type=\"submit\" value=\"Apply\">"
|
||||
|
|
|
@ -2611,6 +2611,9 @@ int http_process_req_stat_post(struct stream_interface *si, struct http_txn *txn
|
|||
else if (strcmp(value, "start") == 0) {
|
||||
action = ST_ADM_ACTION_START;
|
||||
}
|
||||
else if (strcmp(value, "shutdown") == 0) {
|
||||
action = ST_ADM_ACTION_SHUTDOWN;
|
||||
}
|
||||
else {
|
||||
si->applet.ctx.stats.st_code = STAT_STATUS_ERRP;
|
||||
goto out;
|
||||
|
@ -2680,6 +2683,18 @@ int http_process_req_stat_post(struct stream_interface *si, struct http_txn *txn
|
|||
altered_servers++;
|
||||
total_servers++;
|
||||
break;
|
||||
case ST_ADM_ACTION_SHUTDOWN:
|
||||
if (px->state != PR_STSTOPPED) {
|
||||
struct session *sess, *sess_bck;
|
||||
|
||||
list_for_each_entry_safe(sess, sess_bck, &sv->actconns, by_srv)
|
||||
if (sess->srv_conn == sv)
|
||||
session_shutdown(sess, SN_ERR_KILLED);
|
||||
|
||||
altered_servers++;
|
||||
total_servers++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
/* the server name is unknown or ambiguous (duplicate names) */
|
||||
|
|
Loading…
Reference in New Issue