mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-10 09:07:02 +02:00
MEDIUM: session: take care of incrementing/decrementing jobs
Each user of a session increments/decrements the jobs variable at its own place, resulting in a real mess and inconsistencies between them. Let's have session_new() increment jobs and session_free() decrement it.
This commit is contained in:
parent
2cc5bae0b8
commit
6f5e4b98df
@ -1949,7 +1949,6 @@ spoe_create_appctx(struct spoe_config *conf)
|
|||||||
strm->res.flags |= CF_READ_DONTWAIT;
|
strm->res.flags |= CF_READ_DONTWAIT;
|
||||||
|
|
||||||
conf->agent_fe.feconn++;
|
conf->agent_fe.feconn++;
|
||||||
jobs++;
|
|
||||||
totalconn++;
|
totalconn++;
|
||||||
|
|
||||||
task_wakeup(SPOE_APPCTX(appctx)->task, TASK_WOKEN_INIT);
|
task_wakeup(SPOE_APPCTX(appctx)->task, TASK_WOKEN_INIT);
|
||||||
|
@ -2415,7 +2415,6 @@ __LJMP static int hlua_socket_new(lua_State *L)
|
|||||||
|
|
||||||
/* Update statistics counters. */
|
/* Update statistics counters. */
|
||||||
socket_proxy.feconn++; /* beconn will be increased later */
|
socket_proxy.feconn++; /* beconn will be increased later */
|
||||||
jobs++;
|
|
||||||
totalconn++;
|
totalconn++;
|
||||||
|
|
||||||
task_wakeup(strm->task, TASK_WOKEN_INIT);
|
task_wakeup(strm->task, TASK_WOKEN_INIT);
|
||||||
|
@ -527,7 +527,6 @@ void listener_accept(int fd)
|
|||||||
actconn++;
|
actconn++;
|
||||||
}
|
}
|
||||||
|
|
||||||
jobs++;
|
|
||||||
totalconn++;
|
totalconn++;
|
||||||
l->nbconn++;
|
l->nbconn++;
|
||||||
|
|
||||||
@ -545,7 +544,6 @@ void listener_accept(int fd)
|
|||||||
*/
|
*/
|
||||||
if (!(l->options & LI_O_UNLIMITED))
|
if (!(l->options & LI_O_UNLIMITED))
|
||||||
actconn--;
|
actconn--;
|
||||||
jobs--;
|
|
||||||
l->nbconn--;
|
l->nbconn--;
|
||||||
if (ret == 0) /* successful termination */
|
if (ret == 0) /* successful termination */
|
||||||
continue;
|
continue;
|
||||||
|
@ -1836,7 +1836,6 @@ static struct appctx *peer_session_create(struct peers *peers, struct peer *peer
|
|||||||
s->res.flags |= CF_READ_DONTWAIT;
|
s->res.flags |= CF_READ_DONTWAIT;
|
||||||
|
|
||||||
p->feconn++;/* beconn will be increased later */
|
p->feconn++;/* beconn will be increased later */
|
||||||
jobs++;
|
|
||||||
totalconn++;
|
totalconn++;
|
||||||
|
|
||||||
peer->appctx = appctx;
|
peer->appctx = appctx;
|
||||||
|
@ -53,6 +53,7 @@ struct session *session_new(struct proxy *fe, struct listener *li, enum obj_type
|
|||||||
memset(sess->stkctr, 0, sizeof(sess->stkctr));
|
memset(sess->stkctr, 0, sizeof(sess->stkctr));
|
||||||
vars_init(&sess->vars, SCOPE_SESS);
|
vars_init(&sess->vars, SCOPE_SESS);
|
||||||
sess->task = NULL;
|
sess->task = NULL;
|
||||||
|
jobs++;
|
||||||
}
|
}
|
||||||
return sess;
|
return sess;
|
||||||
}
|
}
|
||||||
@ -64,6 +65,7 @@ void session_free(struct session *sess)
|
|||||||
session_store_counters(sess);
|
session_store_counters(sess);
|
||||||
vars_prune_per_sess(&sess->vars);
|
vars_prune_per_sess(&sess->vars);
|
||||||
pool_free2(pool2_session, sess);
|
pool_free2(pool2_session, sess);
|
||||||
|
jobs--;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* perform minimal intializations, report 0 in case of error, 1 if OK. */
|
/* perform minimal intializations, report 0 in case of error, 1 if OK. */
|
||||||
@ -377,7 +379,6 @@ static void session_kill_embryonic(struct session *sess)
|
|||||||
|
|
||||||
if (!(sess->listener->options & LI_O_UNLIMITED))
|
if (!(sess->listener->options & LI_O_UNLIMITED))
|
||||||
actconn--;
|
actconn--;
|
||||||
jobs--;
|
|
||||||
sess->listener->nbconn--;
|
sess->listener->nbconn--;
|
||||||
if (sess->listener->state == LI_FULL)
|
if (sess->listener->state == LI_FULL)
|
||||||
resume_listener(sess->listener);
|
resume_listener(sess->listener);
|
||||||
|
@ -2420,7 +2420,7 @@ struct task *process_stream(struct task *t)
|
|||||||
sess->fe->feconn--;
|
sess->fe->feconn--;
|
||||||
if (s->flags & SF_BE_ASSIGNED)
|
if (s->flags & SF_BE_ASSIGNED)
|
||||||
s->be->beconn--;
|
s->be->beconn--;
|
||||||
jobs--;
|
|
||||||
if (sess->listener) {
|
if (sess->listener) {
|
||||||
if (!(sess->listener->options & LI_O_UNLIMITED))
|
if (!(sess->listener->options & LI_O_UNLIMITED))
|
||||||
actconn--;
|
actconn--;
|
||||||
|
Loading…
Reference in New Issue
Block a user