mirror of
https://github.com/postgres/postgres.git
synced 2025-07-18 17:42:25 +03:00
Fix commit_ts for standby
Module initialization was still not completely correct after commit
6b61955135
, per crash report from Takashi Ohnishi. To fix, instead of
trying to monkey around with the value of the GUC setting directly, add
a separate boolean flag that enables the feature on a standby, but only
for the startup (recovery) process, when it sees that its master server
has the feature enabled.
Discussion: http://www.postgresql.org/message-id/ca44c6c7f9314868bdc521aea4f77cbf@MP-MSGSS-MBX004.msg.nttdata.co.jp
Also change the deactivation routine to delete all segment files rather
than leaving the last one around. (This doesn't need separate
WAL-logging, because on recovery we execute the same deactivation
routine anyway.)
In passing, clean up the code structure somewhat, particularly so that
xlog.c doesn't know so much about when to activate/deactivate the
feature.
Thanks to Fujii Masao for testing and Petr Jelínek for off-list discussion.
Back-patch to 9.5, where commit_ts was introduced.
This commit is contained in:
@ -1237,8 +1237,7 @@ RecordTransactionCommit(void)
|
||||
|
||||
TransactionTreeSetCommitTsData(xid, nchildren, children,
|
||||
replorigin_session_origin_timestamp,
|
||||
replorigin_session_origin,
|
||||
false, false);
|
||||
replorigin_session_origin, false);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -5333,8 +5332,7 @@ xact_redo_commit(xl_xact_parsed_commit *parsed,
|
||||
|
||||
/* Set the transaction commit timestamp and metadata */
|
||||
TransactionTreeSetCommitTsData(xid, parsed->nsubxacts, parsed->subxacts,
|
||||
commit_time, origin_id,
|
||||
true, false);
|
||||
commit_time, origin_id, false);
|
||||
|
||||
if (standbyState == STANDBY_DISABLED)
|
||||
{
|
||||
|
Reference in New Issue
Block a user