Re: Avoid erroring out when unable to remove or parse logical rewrite files to save checkpoint work
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
Cc: Nathan Bossart <nathandbossart@gmail.com>, Thomas Munro <thomas.munro@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, Andres Freund <andres@anarazel.de>, "Bossart, Nathan" <bossartn@amazon.com>, Julien Rouhaud <rjuju123@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2022-08-25T12:21:47Z
Lists: pgsql-hackers
On Thu, Aug 25, 2022 at 10:48:08AM +0530, Bharath Rupireddy wrote: > On Tue, Aug 23, 2022 at 11:37 PM Nathan Bossart <nathandbossart@gmail.com> wrote: >> IIUC an error in get_dirent_type() could cause slots to be skipped here, >> which is a behavior change. > > That behaviour hasn't changed, no? Currently, if lstat() fails in > ReorderBufferCleanupSerializedTXNs() it returns to > StartupReorderBuffer()'s while loop which is in a way continuing with > the other slots, this patch does nothing new. Are you sure? FWIW, the changes in reorderbuffer.c for ReorderBufferCleanupSerializedTXNs() reduce the code readability, in my opinion, so that's one less argument in favor of this change. The gain in ParseConfigDirectory() is kind of cool. pg_tzenumerate_next(), copydir(), RemoveXlogFile() StartupReplicationSlots(), CheckPointLogicalRewriteHeap() and RemovePgTempFilesInDir() seem fine, as well. At least these avoid extra lstat() calls when the file type is unknown, which would be only a limited number of users where some of the three DT_* are missing (right?). -- Michael
Commits
-
Expand the use of get_dirent_type(), shaving a few calls to stat()/lstat()
- bfb9dfd93720 16.0 landed
-
fsync pg_logical/mappings in CheckPointLogicalRewriteHeap().
- fd48e5f5d3a1 13.6 landed
- f862cc09fad1 10.20 landed
- 2c15b29f7c22 11.15 landed
- 2b7dbe4bd587 14.2 landed
- 1c6d055ba77a 12.10 landed
- 1fabec7d7c38 15.0 landed
-
Introduce logical decoding.
- b89e151054a0 9.4.0 cited