postgres.git / summary / log / commit / refs

commit    d45e8dc527f9e66c56dd91ae3e79eac1b094b96e
Author:   Alvaro Herrera <alvherre@alvh.no-ip.org>
Date:     Fri Nov 14 18:14:02 2014 +0000

    Allow interrupting GetMultiXactIdMembers
    
    This function has a loop which can lead to uninterruptible process
    "stalls" (actually infinite loops) when some bugs are triggered.  Avoid
    that unpleasant situation by adding a check for interrupts in a place
    that shouldn't degrade performance in the normal case.
    
    Backpatch to 9.3.  Older branches have an identical loop here, but the
    aforementioned bugs are only a problem starting in 9.3 so there doesn't
    seem to be any point in backpatching any further.


src/backend/access/transam/multixact.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c index c0479ce59a7..3dd9892db54 100644 --- a/src/backend/access/transam/multixact.c +++ b/src/backend/access/transam/multixact.c @@ -1258,6 +1258,7 @@ retry: { /* Corner case 2: next multixact is still being filled in */ LWLockRelease(MultiXactOffsetControlLock); + CHECK_FOR_INTERRUPTS(); pg_usleep(1000L); goto retry; } [parent: 9fc8871212d3]