Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitcb9079c

Browse files
committed
Improve subscription locking
This avoids "tuple concurrently updated" errors when a ALTER or DROPSUBSCRIPTION writes to pg_subscription_rel at the same time as a worker.Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>
1 parent42794d6 commitcb9079c

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

‎src/backend/catalog/pg_subscription.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828

2929
#include"nodes/makefuncs.h"
3030

31+
#include"storage/lmgr.h"
32+
3133
#include"utils/array.h"
3234
#include"utils/builtins.h"
3335
#include"utils/fmgroids.h"
@@ -246,6 +248,8 @@ SetSubscriptionRelState(Oid subid, Oid relid, char state,
246248
boolnulls[Natts_pg_subscription_rel];
247249
Datumvalues[Natts_pg_subscription_rel];
248250

251+
LockSharedObject(SubscriptionRelationId,subid,0,AccessShareLock);
252+
249253
rel=heap_open(SubscriptionRelRelationId,RowExclusiveLock);
250254

251255
/* Try finding existing mapping. */

‎src/backend/commands/subscriptioncmds.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -644,6 +644,9 @@ AlterSubscription(AlterSubscriptionStmt *stmt)
644644
subid=HeapTupleGetOid(tup);
645645
sub=GetSubscription(subid, false);
646646

647+
/* Lock the subscription so nobody else can do anything with it. */
648+
LockSharedObject(SubscriptionRelationId,subid,0,AccessExclusiveLock);
649+
647650
/* Form a new tuple. */
648651
memset(values,0,sizeof(values));
649652
memset(nulls, false,sizeof(nulls));

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp