mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-26 19:35:12 +00:00
The concurrency semaphore gates uninitialized connections across all do_accepts loops, but was initialized to a fixed value regardless of how many listeners exist. With multiple listeners competing for the same units, each effectively gets less than the configured concurrency. Initialize the semaphore to concurrency - 1 and signal 1 per listen() call, so total capacity is concurrency - 1 + nr_listeners. This guarantees each listener's accept loop can have at least one unit available. It mainly fixes problem when setting uninitialized_connections_semaphore_cpu_concurrency config value to 1 would result in not being able to process connections, as only 1 out of 2 listeners got the semaphore. Fixes https://scylladb.atlassian.net/browse/SCYLLADB-762 Backport: no, it's a minor problem Closes scylladb/scylladb#28747 * github.com:scylladb/scylladb: test: add test_uninitialized_conns_semaphore generic_server: fix waiters count in shed log generic_server: scale connection concurrency semaphore by listener count