• Amit Kapila's avatar
    Avoid possible deadlock while locking multiple heap pages. · 0b8bdb3c
    Amit Kapila authored
    To avoid deadlock, backend acquires a lock on heap pages in block
    number order.  In certain cases, lock on heap pages is dropped and
    reacquired.  In this case, the locks are dropped for reading in
    corresponding VM page/s. The issue is we re-acquire locks in bufferId
    order whereas the intention was to acquire in blockid order.
    
    This commit ensures that we will always acquire locks on heap pages in
    blockid order.
    
    Reported-by: Nishant Fnu
    Author: Nishant Fnu
    Reviewed-by: Amit Kapila and Robert Haas
    Backpatch-through: 9.4
    Discussion: https://postgr.es/m/5883C831-2ED1-47C8-BFAC-2D5BAE5A8CAE@amazon.com
    0b8bdb3c
hio.c 20.9 KB