From ee83df899087ecf88adf23fc1228fa03aaa4cd54 Mon Sep 17 00:00:00 2001 From: Brian Cloutier Date: Fri, 23 Sep 2016 16:22:27 +0300 Subject: [PATCH] Reading pg_worker_list.conf on upgrade --- src/backend/distributed/utils/node_metadata.c | 36 +++++++++---------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/src/backend/distributed/utils/node_metadata.c b/src/backend/distributed/utils/node_metadata.c index dcec491c7..5efa9c1e1 100644 --- a/src/backend/distributed/utils/node_metadata.c +++ b/src/backend/distributed/utils/node_metadata.c @@ -145,31 +145,27 @@ cluster_remove_node(PG_FUNCTION_ARGS) /* + * cluster_initialize_node_metadata is run once, when upgrading citus. It injests the + * existing pg_worker_list.conf into pg_dist_node, then adds a header to the file stating + * that it's no longer used. */ Datum cluster_initialize_node_metadata(PG_FUNCTION_ARGS) { - PG_RETURN_BOOL(true); + ListCell *workerNodeCell = NULL; + List *workerNodes = ParseWorkerNodeFile("pg_worker_list.conf"); - /* - * text *filePath = PG_GETARG_TEXT_P(0); - * char *filePathCStr = text_to_cstring(filePath); - * - * ListCell *workerNodeCell = NULL; - * List *workerNodes = ParseWorkerNodeFile(filePathCStr); - * - * foreach(workerNodeCell, workerNodes) - * { - * WorkerNode *workerNode = (WorkerNode *) lfirst(workerNodeCell); - * Datum workerNameDatum = PointerGetDatum(cstring_to_text(workerNode->workerName)); - * - * DirectFunctionCall3(cluster_add_node, workerNameDatum, - * UInt32GetDatum(workerNode->workerPort), - * PointerGetDatum(NULL)); - * } - * - * PG_RETURN_BOOL(true); - */ + foreach(workerNodeCell, workerNodes) + { + WorkerNode *workerNode = (WorkerNode *) lfirst(workerNodeCell); + Datum workerNameDatum = PointerGetDatum(cstring_to_text(workerNode->workerName)); + + DirectFunctionCall3(cluster_add_node, workerNameDatum, + UInt32GetDatum(workerNode->workerPort), + PointerGetDatum(NULL)); + } + + PG_RETURN_BOOL(true); }