From 5e5245076ea8105dab88c2bfd2ad90a96b48dbdd Mon Sep 17 00:00:00 2001 From: "lingce.ldm" Date: Fri, 25 Oct 2019 14:49:49 +0800 Subject: [PATCH] Fix two bugs for synchronous replication --- src/backend/replication/syncrep.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/backend/replication/syncrep.c b/src/backend/replication/syncrep.c index a21f7d3..7b09d0f 100644 --- a/src/backend/replication/syncrep.c +++ b/src/backend/replication/syncrep.c @@ -261,10 +261,10 @@ SyncRepWaitForLSN(XLogRecPtr lsn, bool commit) if (QueryCancelPending) { QueryCancelPending = false; + SyncRepCancelWait(); ereport(WARNING, (errmsg("canceling wait for synchronous replication due to user request"), errdetail("The transaction has already committed locally, but might not have been replicated to the standby."))); - SyncRepCancelWait(); break; } @@ -361,12 +361,10 @@ SyncRepCancelWait(void) void SyncRepCleanupAtProcExit(void) { + LWLockAcquire(SyncRepLock, LW_EXCLUSIVE); if (!SHMQueueIsDetached(&(MyProc->syncRepLinks))) - { - LWLockAcquire(SyncRepLock, LW_EXCLUSIVE); SHMQueueDelete(&(MyProc->syncRepLinks)); - LWLockRelease(SyncRepLock); - } + LWLockRelease(SyncRepLock); } /* -- 2.9.2