ERROR: multixact X from before cutoff Y found to be still running

From: "Bossart, Nathan" <bossartn(at)amazon(dot)com>
To: "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org>
Cc: "Schneider, Jeremy" <schnjere(at)amazon(dot)com>
Subject: ERROR: multixact X from before cutoff Y found to be still running
Date: 2019-09-05 00:37:40
Message-ID: DAFB8AFF-2F05-4E33-AD7F-FF8B0F760C17@amazon.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-hackers

Hi,

Currently, if you hold a multixact open long enough to generate an
"oldest multixact is far in the past" message during VACUUM, you may
see the following ERROR:

WARNING: oldest multixact is far in the past
HINT: Close open transactions with multixacts soon to avoid wraparound problems.
ERROR: multixact X from before cutoff Y found to be still running

Upon further inspection, I found that this is because the multixact
limit used in this case is the threshold for which we emit the "oldest
multixact" message. Instead, I think the multixact limit should be
set to the result of GetOldestMultiXactId(), effectively forcing a
minimum freeze age of zero. The ERROR itself is emitted by
FreezeMultiXactId() and appears to be a safeguard against problems
like this.

I've attached a patch to set the limit to the oldest multixact instead
of the "safeMxactLimit" in this case. I'd like to credit Jeremy
Schneider as the original reporter.

Nathan

Attachment Content-Type Size
fix_multixact_limit.patch application/octet-stream 1.1 KB

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Jeremy Schneider 2019-09-05 01:01:05 Re: ERROR: multixact X from before cutoff Y found to be still running
Previous Message PG Bug reporting form 2019-09-05 00:24:23 BUG #15991: Troubles about Management Tools for Postgre.

Browse pgsql-hackers by date

  From Date Subject
Next Message Fujii Masao 2019-09-05 00:46:26 pg_promote() can cause busy loop
Previous Message Tom Lane 2019-09-05 00:25:22 Re: Unexpected "shared memory block is still in use"