From cbdb528a7635be502949651016aeea938feb4479 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 12 Oct 2022 10:04:01 +0000 Subject: [PATCH] MEDIUM: stick-table: requeue the wakeup task out of the write lock We don't need to call stktable_requeue_exp() with the table's lock held anymore, so let's move it out. It should slightly reduce the contention on the write lock, though it is now already quite low. --- src/stick_table.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/stick_table.c b/src/stick_table.c index 57c1b1775..c9f1fda3a 100644 --- a/src/stick_table.c +++ b/src/stick_table.c @@ -566,10 +566,10 @@ struct stksess *stktable_get_entry(struct stktable *table, struct stktable_key * ts = ts2; } - stktable_requeue_exp(table, ts); HA_ATOMIC_INC(&ts->ref_cnt); HA_RWLOCK_WRUNLOCK(STK_TABLE_LOCK, &table->lock); + stktable_requeue_exp(table, ts); return ts; } @@ -604,8 +604,9 @@ struct stksess *stktable_set_entry(struct stktable *table, struct stksess *nts) /* now we're write-locked */ __stktable_store(table, ts); - stktable_requeue_exp(table, ts); HA_RWLOCK_WRUNLOCK(STK_TABLE_LOCK, &table->lock); + + stktable_requeue_exp(table, ts); return ts; }