Re: Temporary tables prevent autovacuum, leading to XID wraparound
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Michael Paquier <michael@paquier.xyz>
Cc: pgsql-hackers@lists.postgresql.org, "Tsunakawa, Takayuki" <tsunakawa.takay@jp.fujitsu.com>, Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>, "tgl@sss.pgh.pa.us" <tgl@sss.pgh.pa.us>, "robertmhaas@gmail.com" <robertmhaas@gmail.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2018-08-09T09:29:54Z
Lists: pgsql-hackers
On 2018-08-09 09:00:29 +0200, Michael Paquier wrote: > On Thu, Aug 09, 2018 at 08:32:32AM +0530, Andres Freund wrote: > > My point is that the documentation isn't sufficient. Not that there's an active problem. > > OK. Attached is the latest version if the patch I have that I was > preparing for commit. > > On top of isTempNamespaceInUse I have this note: > + * Note: this can be used while scanning relations in pg_class to detect > + * orphaned temporary tables or namespaces with a backend connected to a > + * given database. > > Would you be fine if I add an extra note like what's in > BackendIdGetProc? Say "The result may be out of date quickly, so the > caller must be careful how to handle this information." That's a caveat, not a documentation of the memory ordering / concurrency. You somewhere need a comment to the effect of "We are guaranteed to see a recent enough value of ->tempNamespace because anybody creating a temporary table acquires a lock - serving as a memory barrier - during the creation of said table, after assigning the tempNamespace variable. At the same time, before considering dropping a temporary table as orphaned, we acquire a lock and recheck tempNamespace afterwards". Note that I'm not explaining the concrete model you have here, but the way you could explain a theoretical one. - Andres
Commits
-
Clarify comment about assignment and reset of temp namespace ID in MyProc
- 9fc9933695af 11.0 landed
- 1339fcc89617 12.0 landed
-
Make autovacuum more aggressive to remove orphaned temp tables
- 943576bddcb5 11.0 landed
- 246a6c8f7b23 12.0 landed
-
Don't count background workers against a user's connection limit.
- 13752743bf70 9.6.2 cited