Execute a CHECKPOINT immediately after promoting the server

This ensures "pg_control" is updated with the latest timeline, mainly
to ensure that if "pg_rewind" is executed as part of a switchover
that it sees the latest timeline.

Per suggestion from GitHub user "superflav" in GitHub #378.

See also:

  https://www.postgresql.org/message-id/flat/20150428180253.GU30322%40tamriel.snowman.net
This commit is contained in:
Ian Barwick
2018-02-09 12:09:16 +09:00
parent bde9fea48c
commit a2068768ab

View File

@@ -1976,6 +1976,13 @@ _do_standby_promote_internal(PGconn *conn, const char *data_dir)
log_verbose(LOG_INFO, _("standby promoted to primary after %i second(s)"), i);
/*
* Execute a CHECKPOINT as soon as possible after promotion. The primary
* reason for this is to ensure that "pg_control" has the latest timeline
* before it's read by "pg_rewind", typically during a switchover operation.
*/
checkpoint(conn);
/* update node information to reflect new status */
if (update_node_record_set_primary(conn, config_file_options.node_id) == false)
{