• Alvaro Herrera's avatar
    Fix replication origin-related race conditions · b2c95a37
    Alvaro Herrera authored
    Similar to what was fixed in commit 9915de6c for replication slots,
    but this time it's related to replication origins: DROP SUBSCRIPTION
    attempts to drop the replication origin, but that fails if the
    replication worker process hasn't yet marked it unused.  This causes
    failures in the buildfarm:
    ERROR:  could not drop replication origin with OID 1, in use by PID 34069
    
    Like the aforementioned commit, fix by having the process running DROP
    SUBSCRIPTION sleep until the worker marks the the replication origin
    struct as free.  This uses a condition variable on each replication
    origin shmem state struct, so that the session trying to drop can sleep
    and expect to be awakened by the process keeping the origin open.
    
    Also fix a SGML markup in the previous commit.
    
    Discussion: https://postgr.es/m/20170808001433.rozlseaf4m2wkw3n@alvherre.pgsql
    b2c95a37
pgstat.h 37.7 KB