Skip to content

Commit 51f9ea2

Browse files
committed
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.
1 parent 0c5af0a commit 51f9ea2

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

src/backend/access/transam/multixact.c

+1
Original file line numberDiff line numberDiff line change
@@ -1278,6 +1278,7 @@ GetMultiXactIdMembers(MultiXactId multi, MultiXactMember **members,
12781278
{
12791279
/* Corner case 2: next multixact is still being filled in */
12801280
LWLockRelease(MultiXactOffsetControlLock);
1281+
CHECK_FOR_INTERRUPTS();
12811282
pg_usleep(1000L);
12821283
goto retry;
12831284
}

0 commit comments

Comments
 (0)