diff --git a/src/backend/distributed/executor/multi_router_executor.c b/src/backend/distributed/executor/multi_router_executor.c index 5c2f04165..d9900798f 100644 --- a/src/backend/distributed/executor/multi_router_executor.c +++ b/src/backend/distributed/executor/multi_router_executor.c @@ -153,7 +153,7 @@ CommutativityRuleToLockMode(CmdType commandType, bool upsertQuery) static void AcquireExecutorShardLock(Task *task, LOCKMODE lockMode) { - int64 shardId = task->shardId; + int64 shardId = task->anchorShardId; LockShardResource(shardId, lockMode); } diff --git a/src/backend/distributed/utils/resource_lock.c b/src/backend/distributed/utils/resource_lock.c index a2552d46b..fecd703d1 100644 --- a/src/backend/distributed/utils/resource_lock.c +++ b/src/backend/distributed/utils/resource_lock.c @@ -14,9 +14,10 @@ */ #include "postgres.h" - +#include "c.h" #include "miscadmin.h" +#include "distributed/relay_utility.h" #include "distributed/resource_lock.h" #include "storage/lmgr.h" @@ -68,6 +69,8 @@ LockShardResource(uint64 shardId, LOCKMODE lockmode) const bool sessionLock = false; const bool dontWait = false; + AssertArg(shardId != INVALID_SHARD_ID); + SET_LOCKTAG_SHARD_RESOURCE(tag, MyDatabaseId, shardId); (void) LockAcquire(&tag, lockmode, sessionLock, dontWait);