pgsql: Don't hold ProcArrayLock longer than needed in rare cases
| От | Alvaro Herrera |
|---|---|
| Тема | pgsql: Don't hold ProcArrayLock longer than needed in rare cases |
| Дата | |
| Msg-id | E1khJpA-0005pi-92@gemulon.postgresql.org обсуждение исходный текст |
| Список | pgsql-committers |
Don't hold ProcArrayLock longer than needed in rare cases While cancelling an autovacuum worker, we hold ProcArrayLock while formatting a debugging log string. We can make this shorter by saving the data we need to produce the message and doing the formatting outside the locked region. This isn't terribly critical, as it only occurs pretty rarely: when a backend runs deadlock detection and it happens to be blocked by a autovacuum running autovacuum. Still, there's no need to cause a hiccup in ProcArrayLock processing, which can be very high-traffic in some cases. While at it, rework code so that we only print the string when it is really going to be used, as suggested by Michael Paquier. Discussion: https://postgr.es/m/20201118214127.GA3179@alvherre.pgsql Reviewed-by: Michael Paquier <michael@paquier.xyz> Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/450c8230b1f7eed1e927c44fb710d80502bea1d2 Modified Files -------------- src/backend/storage/lmgr/proc.c | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-)
В списке pgsql-committers по дате отправления: