BUG/MEDIUM: master/cli: Pin the master CLI on the first thread of the group 1

There is no reason to start the master CLI on several threads and on several
groups. And in fact, it must not be done otherwise the same FD is inserted
several times in the fdtab, leading to a crash during startup because of a
BUG_ON(). It happens when several groups are configured.

To fix the bug the master CLI is now pinned on the first thread of the first
group.

This patch should fix the issue #2259 and must be backported to 2.8.
This commit is contained in:
Christopher Faulet 2023-09-13 10:13:30 +02:00
parent 3790eb4f85
commit 13fb7170be

View File

@ -3244,6 +3244,9 @@ int mworker_cli_sockpair_new(struct mworker_proc *mworker_proc, int proc)
bind_conf->nice = -64; /* we want to boost priority for local stats */
bind_conf->options |= BC_O_UNLIMITED | BC_O_NOSTOP;
/* Pin master CLI on the first thread of the first group only */
thread_set_pin_grp1(&bind_conf->thread_set, 1);
list_for_each_entry(l, &bind_conf->listeners, by_bind) {
HA_ATOMIC_INC(&unstoppable_jobs);
/* it's a sockpair but we don't want to keep the fd in the master */