• Alvaro Herrera's avatar
    Fix deadlock hazard in CREATE INDEX CONCURRENTLY · 54eff531
    Alvaro Herrera authored
    Multiple sessions doing CREATE INDEX CONCURRENTLY simultaneously are
    supposed to be able to work in parallel, as evidenced by fixes in commit
    c3d09b3b specifically to support this case.  In reality, one of the
    sessions would be aborted by a misterious "deadlock detected" error.
    
    Jeff Janes diagnosed that this is because of leftover snapshots used for
    system catalog scans -- this was broken by 8aa3e47510b9 keeping track of
    (registering) the catalog snapshot.  To fix the deadlocks, it's enough
    to de-register that snapshot prior to waiting.
    
    Backpatch to 9.4, which introduced MVCC catalog scans.
    
    Include an isolationtester spec that 8 out of 10 times reproduces the
    deadlock with the unpatched code for me (Álvaro).
    
    Author: Jeff Janes
    Diagnosed-by: Jeff Janes
    Reported-by: Jeremy Finzel
    Discussion: https://postgr.es/m/CAMa1XUhHjCv8Qkx0WOr1Mpm_R4qxN26EibwCrj0Oor2YBUFUTg%40mail.gmail.com
    54eff531
indexcmds.c 62.9 KB