pgsql: Fix handling of files that source server removes duringpg_rewin - Mailing list pgsql-committers

From Fujii Masao
Subject pgsql: Fix handling of files that source server removes duringpg_rewin
Date
Msg-id E1f1GM3-0002Ke-MW@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Fix handling of files that source server removes during pg_rewind is running.

After processing the filemap to build the list of chunks that will be
fetched from the source to rewing the target server, it is possible that
a file which was previously processed is removed from the source.  A
simple example of such an occurence is a WAL segment which gets recycled
on the target in-between.  When the filemap is processed, files not
categorized as relation files are first truncated to prepare for its
full copy of which is going to be taken from the source, divided into a
set of junks.  However, for a recycled WAL segment, this would result in
a segment which has a zero-byte size.  With such an empty file,
post-rewind recovery thinks that records are saved but they are actually
not because of the truncation which happened when processing the
filemap, resulting in data loss.

In order to fix the problem, make sure that files which are found as
removed on the source when receiving chunks of them are as well deleted
on the target server for consistency.

Back-patch to 9.5 where pg_rewind was added.

Author: Tsunakawa Takayuki
Reviewed-by: Michael Paquier
Reported-by: Tsunakawa Takayuki

Discussion: https://postgr.es/m/0A3221C70F24FB45833433255569204D1F8DAAA2%40G01JPEXMBYT05

Branch
------
REL9_6_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/52c32d8d8d3cc29d9c2ab4a0c360fb09627231e1

Modified Files
--------------
src/bin/pg_rewind/file_ops.c    | 16 ++++++++++++----
src/bin/pg_rewind/file_ops.h    |  1 +
src/bin/pg_rewind/libpq_fetch.c | 10 +++++++---
3 files changed, 20 insertions(+), 7 deletions(-)


pgsql-committers by date:

Previous
From: Fujii Masao
Date:
Subject: pgsql: Fix handling of files that source server removes duringpg_rewin
Next
From: Fujii Masao
Date:
Subject: pgsql: Fix handling of files that source server removes duringpg_rewin