Skip to content
  • Tom Lane's avatar
    d933816c
    Fix busted logic for parallel lock grouping in TopoSort(). · d933816c
    Tom Lane authored
    A "break" statement erroneously left behind by commit a1c1af2a
    caused TopoSort to do the wrong thing if a lock's wait list
    contained multiple members of the same locking group.
    
    Because parallel workers don't normally need any locks not already
    taken by their leader, this is very hard --- maybe impossible ---
    to hit in production.  Still, if it did happen, the queries involved
    in an otherwise-resolvable deadlock would block until canceled.
    
    In addition to removing the bogus "break", add an Assert showing
    that the conflicting uses of the beforeConstraints[] array (for both
    counts and flags) don't overlap, and add some commentary explaining
    why not; because it's not obvious without explanation, IMHO.
    
    Original report and patch from Rui Hai Jiang; additional assert
    and commentary by me.  Back-patch to 9.6 where the bug came in.
    
    Discussion: https://postgr.es/m/CAEri+mLd3bpHLyW+a9pSe1y=aEkeuJpwBSwvo-+m4n7-ceRmXw@mail.gmail.com
    d933816c
    Fix busted logic for parallel lock grouping in TopoSort().
    Tom Lane authored
    A "break" statement erroneously left behind by commit a1c1af2a
    caused TopoSort to do the wrong thing if a lock's wait list
    contained multiple members of the same locking group.
    
    Because parallel workers don't normally need any locks not already
    taken by their leader, this is very hard --- maybe impossible ---
    to hit in production.  Still, if it did happen, the queries involved
    in an otherwise-resolvable deadlock would block until canceled.
    
    In addition to removing the bogus "break", add an Assert showing
    that the conflicting uses of the beforeConstraints[] array (for both
    counts and flags) don't overlap, and add some commentary explaining
    why not; because it's not obvious without explanation, IMHO.
    
    Original report and patch from Rui Hai Jiang; additional assert
    and commentary by me.  Back-patch to 9.6 where the bug came in.
    
    Discussion: https://postgr.es/m/CAEri+mLd3bpHLyW+a9pSe1y=aEkeuJpwBSwvo-+m4n7-ceRmXw@mail.gmail.com
Loading