pgsql: Fix recycling of WAL segments after switching timeline during re

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема pgsql: Fix recycling of WAL segments after switching timeline during re
Дата
Msg-id E1TlmMC-0007LV-Bx@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix recycling of WAL segments after switching timeline during recovery.

This was broken before, we would recycle old WAL segments on wrong timeline
after the recovery target timeline had changed, but my recent commit to
not initialize ThisTimeLineID at all in a standby's checkpointer process
broke this completely.

The problem is that when installing a recycled WAL segment as a future one,
ThisTimeLineID is used to construct the filename. To fix, always update
ThisTimeLineID to the current timeline being recovered, before recycling
WAL segments at a restartpoint.

This still leaves a small window where we might install WAL segments under
wrong timeline ID, if the timeline is changed just as we're about to start
recycling. Also, even if we're replaying timeline X at the momnent, there's
no guarantee that we'll need as many WAL segments on that timeline as we
recycle. We might be just about to reach the point where we switch to next
timeline, so might only need one more WAL segment on the current timeline.
We'll live with the waste in that situation.

Bug pointed out by Fujii Masao. 9.1 and 9.2 had the same issue, when
recovery target timeline was changed, but I committed a slightly different
version of this patch on those branches.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/343ee00b730e9c422082160718b9785f0cb7f8f6

Modified Files
--------------
src/backend/access/transam/xlog.c |   13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)


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

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: pgsql: Fix recycling of WAL segments after changing recovery target tim
Следующее
От: Heikki Linnakangas
Дата:
Сообщение: pgsql: Fix recycling of WAL segments after changing recovery target tim