Re: Could not finish anti-wraparound VACUUM when stop limit is reached

From: Jeff Janes <jeff(dot)janes(at)gmail(dot)com>
To: Andres Freund <andres(at)2ndquadrant(dot)com>
Cc: Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Could not finish anti-wraparound VACUUM when stop limit is reached
Date: 2014-06-03 22:19:09
Message-ID: CAMkU=1x4ii=0R4GRAFEENKBFbfOXncex9uJoANs_MM+bqGHP_g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sun, May 25, 2014 at 8:53 AM, Andres Freund <andres(at)2ndquadrant(dot)com>
wrote:

> On 2014-05-25 11:40:09 -0400, Heikki Linnakangas wrote:
> > So, vac_truncate_clog() tries to get a new transaction ID, which fails
> > because we've already reached the stop-limit. vac_truncate_clog() doesn't
> > really need a new XID to be assigned, though, it only uses it to compare
> > against datfrozenxid to see if wrap-around has already happened, so it
> could
> > use ReadNewTransactionId() instead.
>
> Right. But IIRC we need one in the vicinity anyway to write new
> pg_database et al rows?
>

pg_database and pg_class are updated with heap_inplace_update in these
cases.

The page gets a new LSN, but the tuples do not get a new transaction ID.

Cheers,

Jeff

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Josh Berkus 2014-06-03 23:38:52 Re: idle_in_transaction_timeout
Previous Message Andrew Dunstan 2014-06-03 21:58:08 Re: idle_in_transaction_timeout