mirror of https://github.com/citusdata/citus.git
wip
parent
bb381e7eee
commit
e07fe819c7
|
@ -349,7 +349,7 @@ ShouldSyncTableMetadata(Oid relationId)
|
||||||
static bool
|
static bool
|
||||||
SyncMetadataSnapshotToNode(WorkerNode *workerNode, bool raiseOnError)
|
SyncMetadataSnapshotToNode(WorkerNode *workerNode, bool raiseOnError)
|
||||||
{
|
{
|
||||||
char *currentUser = CurrentUserName();
|
bool failed = false;
|
||||||
|
|
||||||
/* generate and add the local group id's update query */
|
/* generate and add the local group id's update query */
|
||||||
char *localGroupIdUpdateCommand = LocalGroupIdUpdateCommand(workerNode->groupId);
|
char *localGroupIdUpdateCommand = LocalGroupIdUpdateCommand(workerNode->groupId);
|
||||||
|
@ -375,9 +375,14 @@ SyncMetadataSnapshotToNode(WorkerNode *workerNode, bool raiseOnError)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SendOptionalCommandToWorkersWithMetadata(command);
|
bool commandFailed =
|
||||||
|
SendOptionalCommandToWorkersWithMetadata(command);
|
||||||
|
|
||||||
|
failed |= commandFailed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -388,8 +393,6 @@ SyncMetadataSnapshotToNode(WorkerNode *workerNode, bool raiseOnError)
|
||||||
static void
|
static void
|
||||||
DropMetadataSnapshotOnNode(WorkerNode *workerNode)
|
DropMetadataSnapshotOnNode(WorkerNode *workerNode)
|
||||||
{
|
{
|
||||||
char *userName = CurrentUserName();
|
|
||||||
|
|
||||||
/* generate the queries which drop the metadata */
|
/* generate the queries which drop the metadata */
|
||||||
List *dropMetadataCommandList = MetadataDropCommands();
|
List *dropMetadataCommandList = MetadataDropCommands();
|
||||||
|
|
||||||
|
|
|
@ -33,12 +33,12 @@
|
||||||
#include "utils/memutils.h"
|
#include "utils/memutils.h"
|
||||||
|
|
||||||
|
|
||||||
static void SendCommandToMetadataWorkersParams(const char *command,
|
static bool SendCommandToMetadataWorkersParams(const char *command,
|
||||||
const char *user, int parameterCount,
|
const char *user, int parameterCount,
|
||||||
const Oid *parameterTypes,
|
const Oid *parameterTypes,
|
||||||
const char *const *parameterValues,
|
const char *const *parameterValues,
|
||||||
bool raiseInterrupts);
|
bool raiseInterrupts);
|
||||||
static void SendCommandToWorkersParamsInternal(TargetWorkerSet targetWorkerSet,
|
static bool SendCommandToWorkersParamsInternal(TargetWorkerSet targetWorkerSet,
|
||||||
const char *command, const char *user,
|
const char *command, const char *user,
|
||||||
int parameterCount,
|
int parameterCount,
|
||||||
const Oid *parameterTypes,
|
const Oid *parameterTypes,
|
||||||
|
@ -129,13 +129,14 @@ SendCommandToWorkersWithMetadata(const char *command)
|
||||||
* SendOptionalCommandToWorkersWithMetadata sends a command to
|
* SendOptionalCommandToWorkersWithMetadata sends a command to
|
||||||
* all workers in parallel. Commands are committed on the workers
|
* all workers in parallel. Commands are committed on the workers
|
||||||
* when the local transaction commits. Failures do not abort
|
* when the local transaction commits. Failures do not abort
|
||||||
* the current transaction.
|
* the current transaction. Instead, the function returns false
|
||||||
|
* if any command fails.
|
||||||
*/
|
*/
|
||||||
void
|
bool
|
||||||
SendOptionalCommandToWorkersWithMetadata(const char *command)
|
SendOptionalCommandToWorkersWithMetadata(const char *command)
|
||||||
{
|
{
|
||||||
bool raiseInterrupts = false;
|
bool raiseInterrupts = false;
|
||||||
SendCommandToMetadataWorkersParams(command, CurrentUserName(),
|
return SendCommandToMetadataWorkersParams(command, CurrentUserName(),
|
||||||
0, NULL, NULL, raiseInterrupts);
|
0, NULL, NULL, raiseInterrupts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -218,7 +219,7 @@ SendBareCommandListToMetadataWorkers(List *commandList)
|
||||||
* SendCommandToMetadataWorkersParams is a wrapper around
|
* SendCommandToMetadataWorkersParams is a wrapper around
|
||||||
* SendCommandToWorkersParamsInternal() enforcing some extra checks.
|
* SendCommandToWorkersParamsInternal() enforcing some extra checks.
|
||||||
*/
|
*/
|
||||||
static void
|
static bool
|
||||||
SendCommandToMetadataWorkersParams(const char *command,
|
SendCommandToMetadataWorkersParams(const char *command,
|
||||||
const char *user, int parameterCount,
|
const char *user, int parameterCount,
|
||||||
const Oid *parameterTypes,
|
const Oid *parameterTypes,
|
||||||
|
@ -230,7 +231,7 @@ SendCommandToMetadataWorkersParams(const char *command,
|
||||||
|
|
||||||
ErrorIfAnyMetadataNodeOutOfSync(workerNodeList);
|
ErrorIfAnyMetadataNodeOutOfSync(workerNodeList);
|
||||||
|
|
||||||
SendCommandToWorkersParamsInternal(NON_COORDINATOR_METADATA_NODES, command, user,
|
return SendCommandToWorkersParamsInternal(NON_COORDINATOR_METADATA_NODES, command, user,
|
||||||
parameterCount, parameterTypes,
|
parameterCount, parameterTypes,
|
||||||
parameterValues, raiseInterrupts);
|
parameterValues, raiseInterrupts);
|
||||||
}
|
}
|
||||||
|
@ -367,7 +368,7 @@ GetConnectionsResults(List *connectionList, bool failOnError)
|
||||||
* paramLengths, paramFormats and resultFormat are hard-coded to NULL, NULL and 0
|
* paramLengths, paramFormats and resultFormat are hard-coded to NULL, NULL and 0
|
||||||
* respectively.
|
* respectively.
|
||||||
*/
|
*/
|
||||||
static void
|
static bool
|
||||||
SendCommandToWorkersParamsInternal(TargetWorkerSet targetWorkerSet, const char *command,
|
SendCommandToWorkersParamsInternal(TargetWorkerSet targetWorkerSet, const char *command,
|
||||||
const char *user, int parameterCount,
|
const char *user, int parameterCount,
|
||||||
const Oid *parameterTypes,
|
const Oid *parameterTypes,
|
||||||
|
@ -381,6 +382,7 @@ SendCommandToWorkersParamsInternal(TargetWorkerSet targetWorkerSet, const char *
|
||||||
Use2PCForCoordinatedTransaction();
|
Use2PCForCoordinatedTransaction();
|
||||||
|
|
||||||
int logLevel = raiseInterrupts ? ERROR : WARNING;
|
int logLevel = raiseInterrupts ? ERROR : WARNING;
|
||||||
|
bool failed = false;
|
||||||
|
|
||||||
/* open connections in parallel */
|
/* open connections in parallel */
|
||||||
WorkerNode *workerNode = NULL;
|
WorkerNode *workerNode = NULL;
|
||||||
|
@ -419,6 +421,8 @@ SendCommandToWorkersParamsInternal(TargetWorkerSet targetWorkerSet, const char *
|
||||||
if (querySent == 0)
|
if (querySent == 0)
|
||||||
{
|
{
|
||||||
ReportConnectionError(connection, logLevel);
|
ReportConnectionError(connection, logLevel);
|
||||||
|
|
||||||
|
failed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -429,12 +433,16 @@ SendCommandToWorkersParamsInternal(TargetWorkerSet targetWorkerSet, const char *
|
||||||
if (!IsResponseOK(result))
|
if (!IsResponseOK(result))
|
||||||
{
|
{
|
||||||
ReportResultError(connection, result, logLevel);
|
ReportResultError(connection, result, logLevel);
|
||||||
|
|
||||||
|
failed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
PQclear(result);
|
PQclear(result);
|
||||||
|
|
||||||
ForgetResults(connection);
|
ForgetResults(connection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ extern bool SendOptionalCommandListToWorkerInTransaction(const char *nodeName, i
|
||||||
const char *nodeUser,
|
const char *nodeUser,
|
||||||
List *commandList);
|
List *commandList);
|
||||||
extern void SendCommandToWorkersWithMetadata(const char *command);
|
extern void SendCommandToWorkersWithMetadata(const char *command);
|
||||||
extern void SendOptionalCommandToWorkersWithMetadata(const char *command);
|
extern bool SendOptionalCommandToWorkersWithMetadata(const char *command);
|
||||||
extern void SendBareCommandListToMetadataWorkers(List *commandList);
|
extern void SendBareCommandListToMetadataWorkers(List *commandList);
|
||||||
extern void EnsureNoModificationsHaveBeenDone(void);
|
extern void EnsureNoModificationsHaveBeenDone(void);
|
||||||
extern void SendCommandListToWorkerInSingleTransaction(const char *nodeName,
|
extern void SendCommandListToWorkerInSingleTransaction(const char *nodeName,
|
||||||
|
|
Loading…
Reference in New Issue