diff options
author | Pavan Deolasee | 2014-09-19 12:25:53 +0000 |
---|---|---|
committer | Pavan Deolasee | 2014-09-23 07:28:59 +0000 |
commit | a913295ae56a1c3297f2c39cb0090223d18772d8 (patch) | |
tree | 50c2dfc6f293a639697bc344917d04cd8ac1a84d | |
parent | 0aab895a0b583de3b3ee2763c993f41e8368ca59 (diff) |
Add support for gtmSlaveName in pgxc_ctl.conf
We now require GTM master and standby to have different names.
-rw-r--r-- | contrib/pgxc_ctl/config.c | 21 | ||||
-rw-r--r-- | contrib/pgxc_ctl/gtm_cmd.c | 15 | ||||
-rw-r--r-- | contrib/pgxc_ctl/pgxc_ctl_bash.c | 5 | ||||
-rw-r--r-- | contrib/pgxc_ctl/varnames.h | 4 | ||||
-rw-r--r-- | doc-xc/src/sgml/pgxc_ctl-ref.sgmlin | 13 |
5 files changed, 42 insertions, 16 deletions
diff --git a/contrib/pgxc_ctl/config.c b/contrib/pgxc_ctl/config.c index 6a4b2c9af3..aa29b1486d 100644 --- a/contrib/pgxc_ctl/config.c +++ b/contrib/pgxc_ctl/config.c @@ -824,7 +824,8 @@ static void verifyResource(void) VAR_gtmMasterPort, VAR_gtmMasterDir, NULL}; - char *GtmSlaveVars[] = {VAR_gtmSlaveServer, + char *GtmSlaveVars[] = {VAR_gtmSlaveName, + VAR_gtmSlaveServer, VAR_gtmSlavePort, VAR_gtmSlaveDir, NULL}; @@ -925,7 +926,7 @@ static void verifyResource(void) /* GTM and GTM slave */ if (isVarYes(VAR_gtmSlave)) checkResourceConflict(VAR_gtmName, VAR_gtmMasterServer, VAR_gtmMasterPort, NULL, VAR_gtmMasterDir, - VAR_gtmName, VAR_gtmSlaveServer, VAR_gtmSlavePort, NULL, VAR_gtmSlaveDir, TRUE, FALSE); + VAR_gtmSlaveName, VAR_gtmSlaveServer, VAR_gtmSlavePort, NULL, VAR_gtmSlaveDir, TRUE, FALSE); /* GTM and GTM Proxy, if any */ if (isVarYes(VAR_gtmProxy)) checkResourceConflict(VAR_gtmName, VAR_gtmMasterServer, VAR_gtmMasterPort, NULL, VAR_gtmMasterDir, @@ -951,28 +952,34 @@ static void verifyResource(void) */ if (isVarYes(VAR_gtmSlave)) { + /* GTM slave and GTM master, if any */ + if (isVarYes(VAR_gtmProxy)) + checkResourceConflict(VAR_gtmSlaveName, VAR_gtmSlaveServer, VAR_gtmSlavePort, NULL, VAR_gtmSlaveDir, + VAR_gtmName, VAR_gtmMasterServer, + VAR_gtmMasterPort, NULL, VAR_gtmMasterDir, + TRUE, TRUE); /* GTM slave and GTM Proxy, if any */ if (isVarYes(VAR_gtmProxy)) - checkResourceConflict(VAR_gtmName, VAR_gtmSlaveServer, VAR_gtmSlavePort, NULL, VAR_gtmSlaveDir, + checkResourceConflict(VAR_gtmSlaveName, VAR_gtmSlaveServer, VAR_gtmSlavePort, NULL, VAR_gtmSlaveDir, VAR_gtmProxyNames, VAR_gtmProxyServers, VAR_gtmProxyPorts, NULL, VAR_gtmProxyDirs, TRUE, TRUE); /* GTM slave and coordinator masters */ - checkResourceConflict(VAR_gtmName, VAR_gtmSlaveServer, VAR_gtmSlavePort, NULL, VAR_gtmSlaveDir, + checkResourceConflict(VAR_gtmSlaveName, VAR_gtmSlaveServer, VAR_gtmSlavePort, NULL, VAR_gtmSlaveDir, VAR_coordNames, VAR_coordMasterServers, VAR_coordPorts, VAR_poolerPorts, VAR_coordMasterDirs, TRUE, TRUE); /* GTM slave and coordinator slaves, if any */ if (isVarYes(VAR_coordSlave)) - checkResourceConflict(VAR_gtmName, VAR_gtmSlaveServer, VAR_gtmSlavePort, NULL, VAR_gtmSlaveDir, + checkResourceConflict(VAR_gtmSlaveName, VAR_gtmSlaveServer, VAR_gtmSlavePort, NULL, VAR_gtmSlaveDir, VAR_coordNames, VAR_coordSlaveServers, VAR_coordSlavePorts, VAR_coordSlavePoolerPorts, VAR_coordSlaveDirs, TRUE, TRUE); /* GTM slave and datanode masters */ - checkResourceConflict(VAR_gtmName, VAR_gtmSlaveServer, VAR_gtmSlavePort, NULL, VAR_gtmSlaveDir, + checkResourceConflict(VAR_gtmSlaveName, VAR_gtmSlaveServer, VAR_gtmSlavePort, NULL, VAR_gtmSlaveDir, VAR_datanodeNames, VAR_datanodeMasterServers, VAR_datanodePorts, NULL, VAR_datanodeMasterDirs, TRUE, TRUE); /* GTM slave and datanode slave, if any */ if (isVarYes(VAR_datanodeSlave)) - checkResourceConflict(VAR_gtmName, VAR_gtmSlaveServer, VAR_gtmSlavePort, NULL, VAR_gtmSlaveDir, + checkResourceConflict(VAR_gtmSlaveName, VAR_gtmSlaveServer, VAR_gtmSlavePort, NULL, VAR_gtmSlaveDir, VAR_datanodeNames, VAR_datanodeSlaveServers, VAR_datanodeSlavePorts, NULL, VAR_datanodeSlaveDirs, TRUE, TRUE); } diff --git a/contrib/pgxc_ctl/gtm_cmd.c b/contrib/pgxc_ctl/gtm_cmd.c index 589268ef0a..c7be7ab09c 100644 --- a/contrib/pgxc_ctl/gtm_cmd.c +++ b/contrib/pgxc_ctl/gtm_cmd.c @@ -138,6 +138,11 @@ int add_gtmSlave(char *name, char *host, int port, char *dir) elog(ERROR, "ERROR: GTM slave is already configured.\n"); return 1; } + if (is_none(name)) + { + elog(ERROR, "ERROR: Cannot add gtm slave with the name \"none\".\n"); + return 1; + } if (is_none(host)) { elog(ERROR, "ERROR: Cannot add gtm slave with the name \"none\".\n"); @@ -148,13 +153,14 @@ int add_gtmSlave(char *name, char *host, int port, char *dir) elog(ERROR, "ERROR: Cannot add gtm slave with the directory \"none\".\n"); return 1; } - if (checkSpecificResourceConflict(name, host, port, dir, TRUE)) + if (checkSpecificResourceConflict(name, host, port, dir, FALSE)) { elog(ERROR, "ERROR: New specified name:%s, host:%s, port:%d and dir:\"%s\" conflicts with existing node.\n", name, host, port, dir); return 1; } assign_sval(VAR_gtmSlave, Strdup("y")); + assign_sval(VAR_gtmSlaveName, Strdup(name)); assign_sval(VAR_gtmSlaveServer, Strdup(host)); snprintf(port_s, MAXTOKEN, "%d", port); assign_sval(VAR_gtmSlavePort, Strdup(port_s)); @@ -172,6 +178,7 @@ int add_gtmSlave(char *name, char *host, int port, char *dir) "# %s\n", timeStampString(date, MAXTOKEN+1)); fprintSval(f, VAR_gtmSlave); + fprintSval(f, VAR_gtmSlaveName); fprintSval(f, VAR_gtmSlaveServer); fprintSval(f, VAR_gtmSlavePort); fprintSval(f, VAR_gtmSlaveDir); @@ -206,6 +213,8 @@ int remove_gtmSlave(bool clean_opt) /* Reconfigure */ reset_var(VAR_gtmSlave); assign_sval(VAR_gtmSlave, Strdup("n")); + reset_var(VAR_gtmSlaveName); + assign_sval(VAR_gtmSlaveName, Strdup("none")); reset_var(VAR_gtmSlaveServer); assign_sval(VAR_gtmSlaveServer, Strdup("none")); reset_var(VAR_gtmSlavePort); @@ -293,7 +302,7 @@ cmd_t *prepare_initGtmSlave(void) "active_host = '%s'\n" "active_port = %d\n" "# End of addition\n", - sval(VAR_gtmSlavePort), sval(VAR_gtmName), + sval(VAR_gtmSlavePort), sval(VAR_gtmSlaveName), sval(VAR_gtmMasterServer), atoi(sval(VAR_gtmMasterPort))); fclose(f); return (cmdInitGtm); @@ -1342,7 +1351,7 @@ int show_config_gtmSlave(int flag, char *hostname) strncat(lineBuf, "\n", MAXLINE); lockLogFile(); elog(NOTICE, "%s", lineBuf); - print_simple_node_info(sval(VAR_gtmName), sval(VAR_gtmSlavePort), sval(VAR_gtmSlaveDir), + print_simple_node_info(sval(VAR_gtmSlaveName), sval(VAR_gtmSlavePort), sval(VAR_gtmSlaveDir), sval(VAR_gtmExtraConfig), sval(VAR_gtmSlaveSpecificExtraConfig)); unlockLogFile(); return 0; diff --git a/contrib/pgxc_ctl/pgxc_ctl_bash.c b/contrib/pgxc_ctl/pgxc_ctl_bash.c index 40fb10f6a9..d3acfc1454 100644 --- a/contrib/pgxc_ctl/pgxc_ctl_bash.c +++ b/contrib/pgxc_ctl/pgxc_ctl_bash.c @@ -85,6 +85,7 @@ char *pgxc_ctl_bash_script[] = { " echo gtmMasterSpecificExtraConfig $gtmMasterSpecificExtraConfig", "", " # GTM slave", +" echo gtmSlaveName $gtmSlaveName", " echo gtmSlave $gtmSlave", " echo gtmSlaveServer $gtmSlaveServer", " echo gtmSlavePort $gtmSlavePort", @@ -426,12 +427,11 @@ char *pgxc_ctl_conf_prototype[] = { "# GTM master with others. Of course, we provide pgxc_remove_gtm command to remove it. This command", "# will not stop the current GTM. It is up to the operator.", "", -"#---- Overall -------", -"gtmName=gtm", "", "#---- GTM Master -----------------------------------------------", "", "#---- Overall ----", +"gtmName=gtm", "gtmMasterServer=node13", "gtmMasterPort=20001", "gtmMasterDir=$HOME/pgxc/nodes/gtm", @@ -448,6 +448,7 @@ char *pgxc_ctl_conf_prototype[] = { "#---- Overall ------", "gtmSlave=y # Specify y if you configure GTM Slave. Otherwise, GTM slave will not be configured and", " # all the following variables will be reset.", +"gtmSlaveName=gtmSlave", "gtmSlaveServer=node12 # value none means GTM slave is not available. Give none if you don't configure GTM Slave.", "gtmSlavePort=20001 # Not used if you don't configure GTM slave.", "gtmSlaveDir=$HOME/pgxc/nodes/gtm # Not used if you don't configure GTM slave.", diff --git a/contrib/pgxc_ctl/varnames.h b/contrib/pgxc_ctl/varnames.h index e2774c57e8..4298f66ae7 100644 --- a/contrib/pgxc_ctl/varnames.h +++ b/contrib/pgxc_ctl/varnames.h @@ -29,10 +29,9 @@ #define VAR_configBackupFile "configBackupFile" #define VAR_allServers "allServers" -/* GTM overall */ -#define VAR_gtmName "gtmName" /* GTM master */ +#define VAR_gtmName "gtmName" #define VAR_gtmMasterServer "gtmMasterServer" #define VAR_gtmMasterPort "gtmMasterPort" #define VAR_gtmMasterDir "gtmMasterDir" @@ -41,6 +40,7 @@ /* GTM slave */ #define VAR_gtmSlave "gtmSlave" +#define VAR_gtmSlaveName "gtmSlaveName" #define VAR_gtmSlaveServer "gtmSlaveServer" #define VAR_gtmSlavePort "gtmSlavePort" #define VAR_gtmSlaveDir "gtmSlaveDir" diff --git a/doc-xc/src/sgml/pgxc_ctl-ref.sgmlin b/doc-xc/src/sgml/pgxc_ctl-ref.sgmlin index ab928802cb..94fb14c631 100644 --- a/doc-xc/src/sgml/pgxc_ctl-ref.sgmlin +++ b/doc-xc/src/sgml/pgxc_ctl-ref.sgmlin @@ -896,7 +896,7 @@ PGXC$ prepare config my_config.conf <term><option>gtmName</option></term> <listitem> <para> - Node name of GTM. + Node name of GTM master. </para> </listitem> </varlistentry> @@ -962,7 +962,16 @@ PGXC$ prepare config my_config.conf </para> </listitem> </varlistentry> - + + <varlistentry> + <term><option>gtmSlaveName</option></term> + <listitem> + <para> + Node name of GTM slave. + </para> + </listitem> + </varlistentry> + <varlistentry> <term><option>gtmSlaveDir</option></term> <listitem> |