Re: BUG #14941: Vacuum crashes
Nathan Bossart <bossartn@amazon.com>
From: "Bossart, Nathan" <bossartn@amazon.com>
To: Andres Freund <andres@anarazel.de>,
Michael Paquier <michael.paquier@gmail.com>
Cc: Masahiko Sawada <sawada.mshk@gmail.com>,
Robert Haas <robertmhaas@gmail.com>,
Lyes Ameddah <lyes.amd@gmail.com>,
Tomas Vondra <tomas.vondra@2ndquadrant.com>,
"pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>,
"pgsql-bugs@postgresql.org" <pgsql-bugs@postgresql.org>
Date: 2018-03-05T21:55:13Z
Lists: pgsql-bugs, pgsql-hackers
Attachments
- v5-0001-Add-parenthesized-options-syntax-for-ANALYZE.patch (application/octet-stream) patch v5-0001
- v6-0002-Add-NOWAIT-option-to-VACUUM-and-ANALYZE.patch (application/octet-stream) patch v6-0002
Thanks for taking a look. On 3/3/18, 6:13 PM, "Andres Freund" <andres@anarazel.de> wrote: > I was working on committing 0002 and 0003, when I noticed that the > second patch doesn't actually fully works. NOWAIT does what it says on > the tin iff the table is locked with a lower lock level than access > exclusive. But if AEL is used, the command is blocked in > > static List * > expand_vacuum_rel(VacuumRelation *vrel) > ... > /* > * We transiently take AccessShareLock to protect the syscache lookup > * below, as well as find_all_inheritors's expectation that the caller > * holds some lock on the starting relation. > */ > relid = RangeVarGetRelid(vrel->relation, AccessShareLock, false); > > ISTM has been added after the patches initially were proposed. See > http://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=19de0ab23ccba12567c18640f00b49f01471018d > > I'm a bit disappointed that the tests didn't catch this, they're clearly > not fully there. They definitely should test the AEL case, as > demonstrated here. Sorry about that. I've added logic to handle ACCESS EXCLUSIVE in v6 of 0002, and I've extended the tests to cover that case. > Independent of that, I'm also concerned that NOWAIT isn't implemented > consistently with other commands. Aren't we erroring out in other uses > of NOWAIT? ISTM a more appropriate keyword would have been SKIP > LOCKED. I think the behaviour makes sense, but I'd rename the internal > flag and the grammar to use SKIP LOCKED. Agreed. I've updated 0002 to use SKIP LOCKED instead of NOWAIT. Nathan
Commits
-
Add option SKIP_LOCKED to VACUUM and ANALYZE
- 803b1301e8c9 12.0 landed
-
Rename VACOPT_NOWAIT to VACOPT_SKIP_LOCKED
- edc6b41bd4a8 12.0 landed
-
Add parenthesized options syntax for ANALYZE.
- 854dd8cff523 11.0 landed
-
Don't allow VACUUM VERBOSE ANALYZE VERBOSE.
- 921059bd66c7 11.0 landed
-
Fix inadequate locking during get_rel_oids().
- 19de0ab23ccb 11.0 cited
-
Avoid having autovacuum workers wait for relation locks.
- 32896c40ca76 9.1.0 cited