• Amit Kapila's avatar
    Make pg_replication_origin_drop safe against concurrent drops. · cd142e03
    Amit Kapila authored
    Currently, we get the origin id from the name and then drop the origin by
    taking ExclusiveLock on ReplicationOriginRelationId. So, two concurrent
    sessions can get the id from the name at the same time and then when they
    try to drop the origin, one of the sessions will get the either
    "tuple concurrently deleted" or "cache lookup failed for replication
    origin ..".
    
    To prevent this race condition we do the entire operation under lock. This
    obviates the need for replorigin_drop() API and we have removed it so if
    any extension authors are using it they need to instead use
    replorigin_drop_by_name. See it's usage in pg_replication_origin_drop().
    
    Author: Peter Smith
    Reviewed-by: Amit Kapila, Euler Taveira, Petr Jelinek, and Alvaro
    Herrera
    Discussion: https://www.postgresql.org/message-id/CAHut%2BPuW8DWV5fskkMWWMqzt-x7RPcNQOtJQBp6SdwyRghCk7A%40mail.gmail.com
    cd142e03
origin.h 2.34 KB