commit 544e2b1661413fe08e3083f03063c12c0d7cf3aa Author: Ian Barwick Date: Tue Sep 8 12:24:14 2020 +0900 Fix snapshot caching on standbys Addresses issue introduced in 623a9ba. diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c index b8bedca04a..227d03bbce 100644 --- a/src/backend/access/transam/multixact.c +++ b/src/backend/access/transam/multixact.c @@ -3320,6 +3320,14 @@ multixact_redo(XLogReaderState *record) } else elog(PANIC, "multixact_redo: unknown op code %u", info); + + /* + * Advance xactCompletionCount so rebuilds of snapshot contents + * can be triggered. + */ + LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE); + ShmemVariableCache->xactCompletionCount++; + LWLockRelease(ProcArrayLock); } Datum diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index af6afcebb1..04ca858918 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -5915,6 +5915,14 @@ xact_redo_commit(xl_xact_parsed_commit *parsed, */ if (XactCompletionApplyFeedback(parsed->xinfo)) XLogRequestWalReceiverReply(); + + /* + * Advance xactCompletionCount so rebuilds of snapshot contents + * can be triggered. + */ + LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE); + ShmemVariableCache->xactCompletionCount++; + LWLockRelease(ProcArrayLock); } /* @@ -5978,6 +5986,14 @@ xact_redo_abort(xl_xact_parsed_abort *parsed, TransactionId xid) /* Make sure files supposed to be dropped are dropped */ DropRelationFiles(parsed->xnodes, parsed->nrels, true); + + /* + * Advance xactCompletionCount so rebuilds of snapshot contents + * can be triggered. + */ + LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE); + ShmemVariableCache->xactCompletionCount++; + LWLockRelease(ProcArrayLock); } void