From b2c95a3798ff39fc24d71b6655ddfe0e4cb3f378 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Tue, 8 Aug 2017 16:07:46 -0400 Subject: Fix replication origin-related race conditions Similar to what was fixed in commit 9915de6c1cb2 for replication slots, but this time it's related to replication origins: DROP SUBSCRIPTION attempts to drop the replication origin, but that fails if the replication worker process hasn't yet marked it unused. This causes failures in the buildfarm: ERROR: could not drop replication origin with OID 1, in use by PID 34069 Like the aforementioned commit, fix by having the process running DROP SUBSCRIPTION sleep until the worker marks the the replication origin struct as free. This uses a condition variable on each replication origin shmem state struct, so that the session trying to drop can sleep and expect to be awakened by the process keeping the origin open. Also fix a SGML markup in the previous commit. Discussion: https://postgr.es/m/20170808001433.rozlseaf4m2wkw3n@alvherre.pgsql --- doc/src/sgml/monitoring.sgml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'doc/src') diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml index eb20c9c543b..12d56282669 100644 --- a/doc/src/sgml/monitoring.sgml +++ b/doc/src/sgml/monitoring.sgml @@ -1222,11 +1222,11 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser LibPQWalReceiverConnect - Waiting in WAL receiver to establish connection to remote server. + Waiting in WAL receiver to establish connection to remote server. LibPQWalReceiverReceive - Waiting in WAL receiver to receive data from remote server. + Waiting in WAL receiver to receive data from remote server. SSLOpenServer @@ -1302,6 +1302,10 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser ProcArrayGroupUpdate Waiting for group leader to clear transaction id at transaction end. + + ReplicationOriginDrop + Waiting for a replication origin to become inactive to be dropped. + ReplicationSlotDrop Waiting for a replication slot to become inactive to be dropped. -- cgit v1.2.3