diff options
author | Michael Paquier <michael@paquier.xyz> | 2020-07-15 15:17:44 +0900 |
---|---|---|
committer | Michael Paquier <michael@paquier.xyz> | 2020-07-15 15:17:44 +0900 |
commit | c6d33d14408664ccd1ebcd2f4e7dddd54cfe698e (patch) | |
tree | 1e81a712090a9b4fdc5cd99adf1f8ab7de833b15 /src/backend/utils/adt/regexp.c | |
parent | e9f031172c6bc76978bf6708628010b65d1e9d99 (diff) | |
download | postgresql-c6d33d14408664ccd1ebcd2f4e7dddd54cfe698e.tar.gz postgresql-c6d33d14408664ccd1ebcd2f4e7dddd54cfe698e.zip |
Fix handling of missing files when using pg_rewind with online source
When working with an online source cluster, pg_rewind gets a list of all
the files in the source data directory using a WITH RECURSIVE query,
returning a NULL result for a file's metadata if it gets removed between
the moment it is listed in a directory and the moment its metadata is
obtained with pg_stat_file() (say a recycled WAL segment). The query
result was processed in such a way that for each tuple we checked only
that the first file's metadata was NULL. This could have two
consequences, both resulting in a failure of the rewind:
- If the first tuple referred to a removed file, all files from the
source would be ignored.
- Any file actually missing would not be considered as such.
While on it, rework slightly the code so as no values are saved if we
know that a file is going to be skipped.
Issue introduced by b36805f, so backpatch down to 9.5.
Author: Justin Pryzby, Michael Paquier
Reviewed-by: Daniel Gustafsson, Masahiko Sawada
Discussion: https://postgr.es/m/20200713061010.GC23581@telsasoft.com
Backpatch-through: 9.5
Diffstat (limited to 'src/backend/utils/adt/regexp.c')
0 files changed, 0 insertions, 0 deletions