Re: BUG #13002: VACUUM to prevent wraparound blocks TRUNCATE

From: Bruce Momjian <bruce(at)momjian(dot)us>
To: maciek(at)heroku(dot)com
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #13002: VACUUM to prevent wraparound blocks TRUNCATE
Date: 2015-04-08 19:09:54
Message-ID: 20150408190954.GC22805@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Wed, Apr 8, 2015 at 06:41:55PM +0000, maciek(at)heroku(dot)com wrote:
> The following bug has been logged on the website:
>
> Bug reference: 13002
> Logged by: Maciek Sakrejda
> Email address: maciek(at)heroku(dot)com
> PostgreSQL version: 9.3.6
> Operating system: Ubuntu 14.04
> Description:
>
> If autovacuum is running a VACUUM to prevent wraparound on a certain table,
> it looks like it blocks TRUNCATE of that table, which would obviate the need
> for the VACUUM in the first place (and could happen much more quickly). This
> seems like a usability wart at best--one has to instead kill the autovacuum
> (e.g., via pg_cancel_backend) and then TRUNCATE. This is especially
> inconvenient when the user trying to truncate does not have permission to
> kill (or even see!) the wraparound VACUUM. Would it be possible to have
> autovacuum yield to a TRUNCATE in this situation?

My guess is this would be hard to do. VACUUM and TRUNCATE request
conflicting locks, so you would have to embed in the locking code that
the _outcome_ of one should allow it to override the lock of the other.
I can't think of anywhere that we allow that. Frankly, you can't really
just ignore the lock --- you would have to cancel the vacuum by sending
a signal or something. I know we have cases where vacuum aborts if it
can't get a lock or something, but I can't remembrer any case where we
externally cancel vacuum like that.

--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ Everyone has their own god. +

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Alvaro Herrera 2015-04-08 19:21:05 Re: BUG #13002: VACUUM to prevent wraparound blocks TRUNCATE
Previous Message Bruce Momjian 2015-04-08 18:43:43 Re: BUG #12990: Missing pg_multixact/members files (appears to have wrapped, then truncated)