summaryrefslogtreecommitdiff
path: root/src/backend/executor
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2015-06-21 18:57:28 +0200
committerAndres Freund <andres@anarazel.de>2015-06-21 19:00:40 +0200
commit2031931440e382c58fe21944c5e707e4a16da5df (patch)
treecb6efb3bad86ea56d9f85a5b3ee398cbc8f03bea /src/backend/executor
parent0f65b6cfce33c32edba025ce701f9a5c334371b5 (diff)
Improve multixact emergency autovacuum logic.
Previously autovacuum was not necessarily triggered if space in the members slru got tight. The first problem was that the signalling was tied to values in the offsets slru, but members can advance much faster. Thats especially a problem if old sessions had been around that previously prevented the multixact horizon to increase. Secondly the skipping logic doesn't work if the database was restarted after autovacuum was triggered - that knowledge is not preserved across restart. This is especially a problem because it's a common panic-reaction to restart the database if it gets slow to anti-wraparound vacuums. Fix the first problem by separating the logic for members from offsets. Trigger autovacuum whenever a multixact crosses a segment boundary, as the current member offset increases in irregular values, so we can't use a simple modulo logic as for offsets. Add a stopgap for the second problem, by signalling autovacuum whenver ERRORing out because of boundaries. Discussion: 20150608163707.GD20772@alap3.anarazel.de Backpatch into 9.3, where it became more likely that multixacts wrap around.
Diffstat (limited to 'src/backend/executor')
0 files changed, 0 insertions, 0 deletions