• Alvaro Herrera's avatar
    Don't hold ProcArrayLock longer than needed in rare cases · 450c8230
    Alvaro Herrera authored
    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.pgsqlReviewed-by: default avatarMichael Paquier <michael@paquier.xyz>
    450c8230
proc.c 58.1 KB