pgsql: Fix some issues with WAL segment opening for pg_receivewal --com

Поиск
Список
Период
Сортировка
От Michael Paquier
Тема pgsql: Fix some issues with WAL segment opening for pg_receivewal --com
Дата
Msg-id E1m5gCg-0005p4-Vh@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix some issues with WAL segment opening for pg_receivewal --compress

The logic handling the opening of new WAL segments was fuzzy when using
--compress if a partial, non-compressed, segment with the same base name
existed in the repository storing those files.  In this case, using
--compress would cause the code to first check for the existence and the
size of a non-compressed segment, followed by the opening of a new
compressed, partial, segment.  The code was accidentally working
correctly on most platforms as the buildfarm has proved, except
bowerbird where gzflush() could fail in this code path.  It is wrong
anyway to take the code path used pre-padding when creating a new
partial, non-compressed, segment, so let's fix it.

Note that this issue exists when users mix successive runs of
pg_receivewal with or without compression, as discovered with the tests
introduced by ffc9dda.

While on it, this refactors the code so as code paths that need to know
about the ".gz" suffix are down from four to one in walmethods.c, easing
a bit the introduction of new compression methods.  This addresses a
second issue where log messages generated for an unexpected failure
would not show the compressed segment name involved, which was
confusing, printing instead the name of the non-compressed equivalent.

Reported-by: Georgios Kokolatos
Discussion: https://postgr.es/m/YPDLz2x3o1aX2wRh@paquier.xyz
Backpatch-through: 10

Branch
------
REL_14_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/3a0d2d0cbaf349a1aba928bb7b14edeaffab5212

Modified Files
--------------
src/bin/pg_basebackup/receivelog.c | 13 ++++---
src/bin/pg_basebackup/walmethods.c | 79 +++++++++++++++++++++++++++++---------
src/bin/pg_basebackup/walmethods.h |  9 +++++
3 files changed, 78 insertions(+), 23 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Amit Kapila
Дата:
Сообщение: pgsql: Fix potential buffer overruns in proto.c.
Следующее
От: Michael Paquier
Дата:
Сообщение: pgsql: Fix some issues with WAL segment opening for pg_receivewal --com