summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavan Deolasee2014-09-19 12:25:53 +0000
committerPavan Deolasee2014-09-23 07:28:59 +0000
commita913295ae56a1c3297f2c39cb0090223d18772d8 (patch)
tree50c2dfc6f293a639697bc344917d04cd8ac1a84d
parent0aab895a0b583de3b3ee2763c993f41e8368ca59 (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.c21
-rw-r--r--contrib/pgxc_ctl/gtm_cmd.c15
-rw-r--r--contrib/pgxc_ctl/pgxc_ctl_bash.c5
-rw-r--r--contrib/pgxc_ctl/varnames.h4
-rw-r--r--doc-xc/src/sgml/pgxc_ctl-ref.sgmlin13
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>