Re: Make relfile tombstone files conditional on WAL level
Thomas Munro <thomas.munro@gmail.com>
From: Thomas Munro <thomas.munro@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Andres Freund <andres@anarazel.de>, Heikki Linnakangas <hlinnaka@iki.fi>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2021-09-29T03:29:16Z
Lists: pgsql-hackers
On Wed, Aug 4, 2021 at 3:22 AM Robert Haas <robertmhaas@gmail.com> wrote: > It's not really clear to me what problem is at hand. The problems that > the tombstone system created for the async I/O stuff weren't really > explained properly, IMHO. And I don't think the current system is all > that ugly. it's not the most beautiful thing in the world but we have > lots of way worse hacks. And, it's easy to understand, requires very > little code, and has few moving parts that can fail. As hacks go it's > a quality hack, I would say. It's not really an AIO problem. It's just that while testing the AIO stuff across a lot of operating systems, we had tests failing on Windows because the extra worker processes you get if you use io_method=worker were holding cached descriptors and causing stuff like DROP TABLESPACE to fail. AFAIK every problem we discovered in that vein is a current live bug in all versions of PostgreSQL for Windows (it just takes other backends or the bgwriter to hold an fd at the wrong moment). The solution I'm proposing to that general class of problem is https://commitfest.postgresql.org/34/2962/ . In the course of thinking about that, it seemed natural to look into the possibility of getting rid of the tombstones, so that at least Unix systems don't find themselves having to suffer through a CHECKPOINT just to drop a tablespace that happens to contain a tombstone.
Commits
-
Fix typos in comments, code and documentation
- 33ab0a2a527e 16.0 cited
-
Increase width of RelFileNumbers from 32 bits to 56 bits.
- 05d4cbf9b6ba 16.0 landed
-
Move RelFileNumber declarations to common/relpath.h.
- 2f47715cc864 16.0 landed
-
Include RelFileLocator fields individually in BufferTag.
- 82ac34db2036 16.0 landed
-
Convert macros to static inline functions (buf_internals.h)
- 3ac88fddd92c 16.0 landed
-
Remove the restriction that the relmap must be 512 bytes.
- d8cd0c6c95c0 16.0 landed
-
Change internal RelFileNode references to RelFileNumber or RelFileLocator.
- b0a55e43299c 16.0 landed
-
Reorder subskiplsn in pg_subscription to avoid alignment issues.
- 79b716cfb7a1 15.0 cited
-
Fix DROP {DATABASE,TABLESPACE} on Windows.
- 4eb2176318d0 15.0 cited
-
Restructure smgr API as per recent proposal. smgr no longer depends on
- 87bd95638552 8.0.0 cited