Re: ERROR: multixact X from before cutoff Y found to be still running
Nathan Bossart <bossartn@amazon.com>
From: "Bossart, Nathan" <bossartn@amazon.com>
To: "Schneider, Jeremy" <schnjere@amazon.com>, Thomas Munro <thomas.munro@gmail.com>
Cc: "pgsql-bugs@postgresql.org" <pgsql-bugs@postgresql.org>, PostgreSQL-development <pgsql-hackers@postgresql.org>, "Nasby, Jim" <nasbyj@amazon.com>
Date: 2019-09-05T20:08:11Z
Lists: pgsql-bugs, pgsql-hackers
On 9/4/19, 9:03 PM, "Thomas Munro" <thomas.munro@gmail.com> wrote: > Both patches prevent mxactLimit from being newer than the oldest > running multixact. The v1 patch uses the most aggressive setting > possible: the oldest running multi; the v2 uses the least aggressive > of the 'safe' and oldest running multi. At first glance it seems like > the second one is better: it only does something different if we're in > the dangerous scenario you identified, but otherwise it sticks to the > safe limit, which generates less IO. Thanks for taking a look! Right, the v2 patch will effectively ramp-down the freezemin as your freeze_max_age gets smaller, while the v1 patch will set the effective freezemin to zero as soon as your multixact age passes the threshold. I think what is unclear to me is whether this ramp-down behavior is the intended functionality or we should be doing something similar to what we do for regular transaction IDs (i.e. force freezemin to zero right after it hits the "oldest xmin is far in the past" threshold). The comment above MultiXactMemberFreezeThreshold() explains things pretty well, but AFAICT it is more geared towards influencing autovacuum scheduling. I agree that v2 is safer from the standpoint that it changes as little as possible, though. Nathan
Commits
-
Fix bug that could try to freeze running multixacts.
- 0640f032abe5 9.6.16 landed
- 486a8f152233 12.1 landed
- 6f1e336de010 11.6 landed
- 583d86f92aab 10.11 landed
- c1443eebe5a8 9.5.20 landed
- 080cf32d2231 9.4.25 landed
- 6bda2af039d4 13.0 landed
-
Teach autovacuum about multixact member wraparound.
- 53bb309d2d5a 9.5.0 cited
-
Separate multixact freezing parameters from xid's
- 801c2dc72cb3 9.4.0 cited