pgsql: Fix commit timestamp initialization

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема pgsql: Fix commit timestamp initialization
Дата
Msg-id E1a7RXH-0001kO-R9@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix commit timestamp initialization

This module needs explicit initialization in order to replay WAL records
in recovery, but we had broken this recently following changes to make
other (stranger) scenarios work correctly.  To fix, rework the
initialization sequence so that it always takes place before WAL replay
commences for both master and standby.

I could have gone for a more localized fix that just added a "startup"
call for the master server, but it seemed better to restructure the
existing callers as well so that the whole thing made more sense.  As a
drawback, there is more control logic in xlog.c now than previously, but
doing otherwise meant passing down the ControlFile flag, which seemed
uglier as a whole.

This also meant adding a check to not re-execute ActivateCommitTs if it
had already been called.

Reported by Fujii Masao.

Backpatch to 9.5.

Branch
------
REL9_5_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/0f2c089d3423bcf2bb11d1e5d2d38638cc31fec4

Modified Files
--------------
src/backend/access/transam/commit_ts.c |   39 ++++++++++++++++++++++----------
src/backend/access/transam/xlog.c      |   22 ++++++++++--------
src/include/access/commit_ts.h         |    2 +-
3 files changed, 40 insertions(+), 23 deletions(-)


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

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: pgsql: Improve some messages
Следующее
От: Alvaro Herrera
Дата:
Сообщение: pgsql: Fix commit timestamp initialization