From 51f9ea25dc4296948eb851a851bb60e0860c70a1 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera <alvherre@alvh.no-ip.org> Date: Fri, 14 Nov 2014 15:14:01 -0300 Subject: [PATCH] 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 bfbe738530e..3c20bb37e4c 100644 --- a/src/backend/access/transam/multixact.c +++ b/src/backend/access/transam/multixact.c @@ -1278,6 +1278,7 @@ retry: { /* Corner case 2: next multixact is still being filled in */ LWLockRelease(MultiXactOffsetControlLock); + CHECK_FOR_INTERRUPTS(); pg_usleep(1000L); goto retry; } -- GitLab