Move call to GetTopTransactionId() earlier in LockAcquire(), removing an infrequently occurring race condition in Hot Standby. An xid must be assigned before a lock appears in shared memory, rather than immediately after, else GetRunningTransactionLocks() may see InvalidTransactionId, causing assertion failures during lock processing on standby.
Bug report and diagnosis by Fujii Masao, fix by me. Branch ------ master Details ------- http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=ed78384acd691e3336e170aa18af69d15d088027 Modified Files -------------- src/backend/storage/ipc/standby.c | 29 +++++++++++++++++++++-------- src/backend/storage/lmgr/lock.c | 29 +++++++++++++++++++++-------- src/include/storage/standby.h | 1 + 3 files changed, 43 insertions(+), 16 deletions(-) -- Sent via pgsql-committers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-committers
