mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-20 21:31:28 +02:00
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:
parent
d971d3fed8
commit
21f7974e05
@ -1487,7 +1487,7 @@ takeover_random_idle_conn(struct eb_root *root, int curtid)
|
|||||||
while (node) {
|
while (node) {
|
||||||
hash_node = eb64_entry(node, struct conn_hash_node, node);
|
hash_node = eb64_entry(node, struct conn_hash_node, node);
|
||||||
conn = hash_node->conn;
|
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);
|
conn_delete_from_tree(conn);
|
||||||
return conn;
|
return conn;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user