Skip to content

Commit 0fc9434

Browse files
committed
Initialize tsId and dbId fields in WAL record of COMMIT PREPARED.
Commit dd428c7 added dbId and tsId to the xl_xact_commit struct but missed that prepared transaction commits reuse that struct. Fix that. Because those fields were left unitialized, replaying a commit prepared WAL record in a hot standby node would fail to remove the relcache init file. That can lead to "could not open file" errors on the standby. Relcache init file only needs to be removed when a system table/index is rewritten in the transaction using two phase commit, so that should be rare in practice. In HEAD, the incorrect dbId/tsId values are also used for filtering in logical replication code, causing the transaction to always be filtered out. Analysis and fix by Andres Freund. Backpatch to 9.0 where hot standby was introduced.
1 parent 9fb8cd2 commit 0fc9434

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/backend/access/transam/twophase.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2035,9 +2035,13 @@ RecordTransactionCommitPrepared(TransactionId xid,
20352035

20362036
/* Emit the XLOG commit record */
20372037
xlrec.xid = xid;
2038-
xlrec.crec.xact_time = GetCurrentTimestamp();
2038+
20392039
xlrec.crec.xinfo = initfileinval ? XACT_COMPLETION_UPDATE_RELCACHE_FILE : 0;
2040-
xlrec.crec.nmsgs = 0;
2040+
2041+
xlrec.crec.dbId = MyDatabaseId;
2042+
xlrec.crec.tsId = MyDatabaseTableSpace;
2043+
2044+
xlrec.crec.xact_time = GetCurrentTimestamp();
20412045
xlrec.crec.nrels = nrels;
20422046
xlrec.crec.nsubxacts = nchildren;
20432047
xlrec.crec.nmsgs = ninvalmsgs;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy