OPTIM: backend: set release on takeover for strict maxconn

When strict maxconn is enforced on a server, it may be necessary to kill
an idle connection to never exceed the limit. To be able to delete a
connection from any thread, takeover is first used to migrate it on the
current thread prior to its deletion.

As takeover is performed to delete a connection instead of reusing it,
<release> argument can be set to true. This removes unnecessary
allocations of resources prior to connection deletion. As such, this
patch is a small optimization for strict maxconn implementation.

Note that this patch depends on the previous one which removes any
assumption in takeover implementation that thread isolation is active if
<release> is true.
This commit is contained in:
Amaury Denoyelle 2025-08-08 17:50:57 +02:00
parent d971d3fed8
commit 21f7974e05

View File

@ -1487,7 +1487,7 @@ takeover_random_idle_conn(struct eb_root *root, int curtid)
while (node) {
hash_node = eb64_entry(node, struct conn_hash_node, node);
conn = hash_node->conn;
if (conn && conn->mux->takeover && conn->mux->takeover(conn, curtid, 0) == 0) {
if (conn && conn->mux->takeover && conn->mux->takeover(conn, curtid, 1) == 0) {
conn_delete_from_tree(conn);
return conn;
}