Merge pull request #5801 from citusdata/marcocitus/row-share-lock

pull/5804/head^2
Marco Slot 2022-03-15 11:00:04 +01:00 committed by GitHub
commit 5fd0ec7dab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 7 deletions

View File

@ -72,7 +72,7 @@ void
SendCommandToWorkersAsUser(TargetWorkerSet targetWorkerSet, const char *nodeUser, SendCommandToWorkersAsUser(TargetWorkerSet targetWorkerSet, const char *nodeUser,
const char *command) const char *command)
{ {
List *workerNodeList = TargetWorkerSetNodeList(targetWorkerSet, ShareLock); List *workerNodeList = TargetWorkerSetNodeList(targetWorkerSet, RowShareLock);
/* run commands serially */ /* run commands serially */
WorkerNode *workerNode = NULL; WorkerNode *workerNode = NULL;
@ -185,7 +185,7 @@ void
SendBareCommandListToMetadataWorkers(List *commandList) SendBareCommandListToMetadataWorkers(List *commandList)
{ {
TargetWorkerSet targetWorkerSet = NON_COORDINATOR_METADATA_NODES; TargetWorkerSet targetWorkerSet = NON_COORDINATOR_METADATA_NODES;
List *workerNodeList = TargetWorkerSetNodeList(targetWorkerSet, ShareLock); List *workerNodeList = TargetWorkerSetNodeList(targetWorkerSet, RowShareLock);
char *nodeUser = CurrentUserName(); char *nodeUser = CurrentUserName();
ErrorIfAnyMetadataNodeOutOfSync(workerNodeList); ErrorIfAnyMetadataNodeOutOfSync(workerNodeList);
@ -226,7 +226,7 @@ SendCommandToMetadataWorkersParams(const char *command,
const char *const *parameterValues) const char *const *parameterValues)
{ {
List *workerNodeList = TargetWorkerSetNodeList(NON_COORDINATOR_METADATA_NODES, List *workerNodeList = TargetWorkerSetNodeList(NON_COORDINATOR_METADATA_NODES,
ShareLock); RowShareLock);
ErrorIfAnyMetadataNodeOutOfSync(workerNodeList); ErrorIfAnyMetadataNodeOutOfSync(workerNodeList);
@ -305,7 +305,7 @@ OpenConnectionsToWorkersInParallel(TargetWorkerSet targetWorkerSet, const char *
{ {
List *connectionList = NIL; List *connectionList = NIL;
List *workerNodeList = TargetWorkerSetNodeList(targetWorkerSet, ShareLock); List *workerNodeList = TargetWorkerSetNodeList(targetWorkerSet, RowShareLock);
WorkerNode *workerNode = NULL; WorkerNode *workerNode = NULL;
foreach_ptr(workerNode, workerNodeList) foreach_ptr(workerNode, workerNodeList)
@ -374,7 +374,7 @@ SendCommandToWorkersParamsInternal(TargetWorkerSet targetWorkerSet, const char *
const char *const *parameterValues) const char *const *parameterValues)
{ {
List *connectionList = NIL; List *connectionList = NIL;
List *workerNodeList = TargetWorkerSetNodeList(targetWorkerSet, ShareLock); List *workerNodeList = TargetWorkerSetNodeList(targetWorkerSet, RowShareLock);
UseCoordinatedTransaction(); UseCoordinatedTransaction();
Use2PCForCoordinatedTransaction(); Use2PCForCoordinatedTransaction();

View File

@ -1819,7 +1819,13 @@ SELECT pg_reload_conf();
t t
(1 row) (1 row)
UPDATE pg_dist_node SET metadatasynced=true WHERE nodeport=:worker_1_port; -- make sure that all the nodes have valid metadata before moving forward
SELECT wait_until_metadata_sync(60000);
wait_until_metadata_sync
---------------------------------------------------------------------
(1 row)
SELECT master_add_node('localhost', :worker_2_port); SELECT master_add_node('localhost', :worker_2_port);
master_add_node master_add_node
--------------------------------------------------------------------- ---------------------------------------------------------------------

View File

@ -779,7 +779,8 @@ ALTER SYSTEM SET citus.metadata_sync_interval TO DEFAULT;
ALTER SYSTEM SET citus.metadata_sync_retry_interval TO DEFAULT; ALTER SYSTEM SET citus.metadata_sync_retry_interval TO DEFAULT;
SELECT pg_reload_conf(); SELECT pg_reload_conf();
UPDATE pg_dist_node SET metadatasynced=true WHERE nodeport=:worker_1_port; -- make sure that all the nodes have valid metadata before moving forward
SELECT wait_until_metadata_sync(60000);
SELECT master_add_node('localhost', :worker_2_port); SELECT master_add_node('localhost', :worker_2_port);