diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2017-07-03 22:47:06 -0400 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2017-07-03 22:47:06 -0400 |
commit | cb9079cd51a2df677dc182aec72d88383b9c2a79 (patch) | |
tree | d4e940aec147b7b21b3a5db5f21ffa991b77ccc8 /src/backend/commands/subscriptioncmds.c | |
parent | 42794d6749f24636efbb198db17c30c63df10900 (diff) | |
download | postgresql-cb9079cd51a2df677dc182aec72d88383b9c2a79.tar.gz postgresql-cb9079cd51a2df677dc182aec72d88383b9c2a79.zip |
Improve subscription locking
This avoids "tuple concurrently updated" errors when a ALTER or DROP
SUBSCRIPTION writes to pg_subscription_rel at the same time as a worker.
Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>
Diffstat (limited to 'src/backend/commands/subscriptioncmds.c')
-rw-r--r-- | src/backend/commands/subscriptioncmds.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c index 9cbd36f6463..6dc3f6ee000 100644 --- a/src/backend/commands/subscriptioncmds.c +++ b/src/backend/commands/subscriptioncmds.c @@ -644,6 +644,9 @@ AlterSubscription(AlterSubscriptionStmt *stmt) subid = HeapTupleGetOid(tup); sub = GetSubscription(subid, false); + /* Lock the subscription so nobody else can do anything with it. */ + LockSharedObject(SubscriptionRelationId, subid, 0, AccessExclusiveLock); + /* Form a new tuple. */ memset(values, 0, sizeof(values)); memset(nulls, false, sizeof(nulls)); |