• T
    Move CheckRecoveryConflictDeadlock() call to a safer place. · ac36e6f7
    Tom Lane 提交于
    This kluge was inserted in a spot apparently chosen at random: the lock
    manager's state is not yet fully set up for the wait, and in particular
    LockWaitCancel hasn't been armed by setting lockAwaited, so the ProcLock
    will not get cleaned up if the ereport is thrown.  This seems to not cause
    any observable problem in trivial test cases, because LockReleaseAll will
    silently clean up the debris; but I was able to cause failures with tests
    involving subtransactions.
    
    Fixes breakage induced by commit c85c9414.
    Back-patch to all affected branches.
    ac36e6f7
lock.c 102.9 KB