mirror of https://github.com/citusdata/citus.git
wip
parent
1cdd8ac512
commit
4d5a4e3a10
|
@ -214,6 +214,8 @@ StartMetadataSyncToNode(const char *nodeNameString, int32 nodePort)
|
|||
MarkNodeHasMetadata(nodeNameString, nodePort, true);
|
||||
MarkNodeMetadataSynced(workerNode->workerName, workerNode->workerPort, true);
|
||||
|
||||
workerNode = FindWorkerNode(nodeNameString, nodePort);
|
||||
|
||||
/* fail if metadata synchronization doesn't succeed */
|
||||
bool raiseInterrupts = true;
|
||||
SyncMetadataSnapshotToNode(workerNode, raiseInterrupts);
|
||||
|
@ -371,7 +373,7 @@ SyncMetadataSnapshotToNode(WorkerNode *workerNode, bool raiseOnError)
|
|||
{
|
||||
if (raiseOnError)
|
||||
{
|
||||
SendCommandToWorkersWithMetadata(command);
|
||||
SendCommandToWorkersWithMetadataNonStrict(command);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1789,17 +1791,19 @@ SyncMetadataToNodes(void)
|
|||
{
|
||||
bool raiseInterrupts = false;
|
||||
|
||||
MarkNodeMetadataSynced(workerNode->workerName,
|
||||
workerNode->workerPort, true);
|
||||
workerNode = FindWorkerNode(workerNode->workerName, workerNode->workerPort);
|
||||
|
||||
if (!SyncMetadataSnapshotToNode(workerNode, raiseInterrupts))
|
||||
{
|
||||
ereport(WARNING, (errmsg("failed to sync metadata to %s:%d",
|
||||
workerNode->workerName,
|
||||
workerNode->workerPort)));
|
||||
result = METADATA_SYNC_FAILED_SYNC;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
MarkNodeMetadataSynced(workerNode->workerName,
|
||||
workerNode->workerPort, true);
|
||||
workerNode->workerPort, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ static bool SendCommandToMetadataWorkersParams(const char *command,
|
|||
const char *user, int parameterCount,
|
||||
const Oid *parameterTypes,
|
||||
const char *const *parameterValues,
|
||||
bool raiseInterrupts);
|
||||
bool raiseInterrupts, bool strictMode);
|
||||
static bool SendCommandToWorkersParamsInternal(TargetWorkerSet targetWorkerSet,
|
||||
const char *command, const char *user,
|
||||
int parameterCount,
|
||||
|
@ -120,8 +120,19 @@ void
|
|||
SendCommandToWorkersWithMetadata(const char *command)
|
||||
{
|
||||
bool raiseInterrupts = true;
|
||||
bool strictMode = true;
|
||||
SendCommandToMetadataWorkersParams(command, CurrentUserName(),
|
||||
0, NULL, NULL, raiseInterrupts);
|
||||
0, NULL, NULL, raiseInterrupts, strictMode);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
SendCommandToWorkersWithMetadataNonStrict(const char *command)
|
||||
{
|
||||
bool raiseInterrupts = true;
|
||||
bool strictMode = false;
|
||||
SendCommandToMetadataWorkersParams(command, CurrentUserName(),
|
||||
0, NULL, NULL, raiseInterrupts, strictMode);
|
||||
}
|
||||
|
||||
|
||||
|
@ -136,8 +147,9 @@ bool
|
|||
SendOptionalCommandToWorkersWithMetadata(const char *command)
|
||||
{
|
||||
bool raiseInterrupts = false;
|
||||
bool strictMode = false;
|
||||
return SendCommandToMetadataWorkersParams(command, CurrentUserName(),
|
||||
0, NULL, NULL, raiseInterrupts);
|
||||
0, NULL, NULL, raiseInterrupts, strictMode);
|
||||
}
|
||||
|
||||
|
||||
|
@ -224,13 +236,16 @@ SendCommandToMetadataWorkersParams(const char *command,
|
|||
const char *user, int parameterCount,
|
||||
const Oid *parameterTypes,
|
||||
const char *const *parameterValues,
|
||||
bool raiseInterrupts)
|
||||
bool raiseInterrupts,
|
||||
bool strictMode)
|
||||
{
|
||||
List *workerNodeList = TargetWorkerSetNodeList(NON_COORDINATOR_METADATA_NODES,
|
||||
ShareLock);
|
||||
|
||||
ErrorIfAnyMetadataNodeOutOfSync(workerNodeList);
|
||||
|
||||
if (strictMode)
|
||||
{
|
||||
ErrorIfAnyMetadataNodeOutOfSync(workerNodeList);
|
||||
}
|
||||
return SendCommandToWorkersParamsInternal(NON_COORDINATOR_METADATA_NODES, command,
|
||||
user,
|
||||
parameterCount, parameterTypes,
|
||||
|
|
|
@ -42,6 +42,7 @@ extern bool SendOptionalCommandListToWorkerInTransaction(const char *nodeName, i
|
|||
const char *nodeUser,
|
||||
List *commandList);
|
||||
extern void SendCommandToWorkersWithMetadata(const char *command);
|
||||
extern void SendCommandToWorkersWithMetadataNonStrict(const char *command);
|
||||
extern bool SendOptionalCommandToWorkersWithMetadata(const char *command);
|
||||
extern void SendBareCommandListToMetadataWorkers(List *commandList);
|
||||
extern void EnsureNoModificationsHaveBeenDone(void);
|
||||
|
|
Loading…
Reference in New Issue