• Fujii Masao's avatar
    Avoid unnecessary acquisition of SyncRepLock in transaction commit time. · be9788e9
    Fujii Masao authored
    In SyncRepWaitForLSN() routine called in transaction commit time,
    SyncRepLock is necessary to atomically both check the shared
    sync_standbys_defined flag and operate the sync replication wait-queue.
    On the other hand, when the flag is false, the lock is not necessary
    because the wait-queue is not touched. But due to the changes by
    commit 48c9f492, previously the lock was taken whatever the flag was.
    This could cause unnecessary performance overhead in every transaction
    commit time. Therefore this commit avoids that unnecessary aquisition
    of SyncRepLock.
    
    Author: Fujii Masao
    Reviewed-by: Asim Praveen, Masahiko Sawada,
    Discussion: https://postgr.es/m/20200406050332.nsscfqjzk2d57zyx@alap3.anarazel.de
    be9788e9
syncrep.c 32.6 KB