diff --git a/doc/html/faq.shtml b/doc/html/faq.shtml index a03c62a7d577a61e1f31cc9eb832e35abe5ab43d..2c613b7beb54dfaa8464465cf41086de964adf1b 100644 --- a/doc/html/faq.shtml +++ b/doc/html/faq.shtml @@ -1639,8 +1639,8 @@ instead of the correct address and prevent communications between nodes. The solution is to either remove this line or configure a different NodeAddr that is known by your other nodes.</p> -<p>The TopologyParam=NoInAddrAny configuration parameter is subject to this -same problem, which can also be addressed by removing actual node +<p>The CommunicationParameters=NoInAddrAny configuration parameter is subject to +this same problem, which can also be addressed by removing actual node name from the "127.0.1.1" as well as the "127.0.0.1" addresses in the /etc/hosts file. It is ok if they point to localhost, but not the actual name of the node.</p> diff --git a/doc/man/man5/slurm.conf.5 b/doc/man/man5/slurm.conf.5 index f6962fcc5a9987ef98c6994836fba751ad7d07ff..e2e94df82da7fa30c5681a004f052489d3254601 100644 --- a/doc/man/man5/slurm.conf.5 +++ b/doc/man/man5/slurm.conf.5 @@ -388,6 +388,21 @@ in some databases, any upper case letters in the name will be silently mapped to lower case. In order to avoid confusion, it is recommended that the name be lower case. +.TP +\fBCommunicationParameters\fR +Comma separated options identifying communication options. +.RS +.TP 15 +\fBNoCtldInAddrAny\fR +Used to directly bind to the address of what the node resolves to running +the slurmctld instead of binding messages to any address on the node, +which is the default. +.TP +\fBNoInAddrAny\fR +Used to directly bind to the address of what the node resolves to instead +of binding messages to any address on the node which is the default. +This option is for all daemons/clients except for the slurmctld. +.RE .TP \fBCompleteWait\fR @@ -3833,16 +3848,6 @@ Comma separated options identifying network topology options. Optimize allocation for Dragonfly network. Valid when TopologyPlugin=topology/tree. .TP -\fBNoCtldInAddrAny\fR -Used to directly bind to the address of what the node resolves to running -the slurmctld instead of binding messages to any address on the node, -which is the default. -.TP -\fBNoInAddrAny\fR -Used to directly bind to the address of what the node resolves to instead -of binding messages to any address on the node which is the default. -This option is for all daemons/clients except for the slurmctld. -.TP \fBTopoOptional\fR Only optimize allocation for network topology if the job includes a switch option. Since optimizing resource allocation for topology involves much higher diff --git a/src/common/read_config.c b/src/common/read_config.c index 984a7a42dc42ed9ebc20448a218887dbc764b486..ca0cca3c60fb1364abaf46abc2f8a8d73c96962c 100644 --- a/src/common/read_config.c +++ b/src/common/read_config.c @@ -4780,6 +4780,20 @@ _validate_and_set_defaults(slurm_ctl_conf_t *conf, s_p_hashtbl_t *hashtbl) conf->wait_time = DEFAULT_WAIT_TIME; (void) s_p_get_string(&conf->topology_param, "TopologyParam", hashtbl); + if (conf->topology_param) { + /* Move legacy settings over to new spot */ + char *legacy_var = "NoInAddrAny"; + if (xstrcasestr(conf->topology_param, legacy_var) && + !xstrcasestr(conf->comm_params, legacy_var)) + xstrfmtcat(conf->comm_params, "%s%s", + conf->comm_params ? "," : "", legacy_var); + + legacy_var = "NoCtldInAddrAny"; + if (xstrcasestr(conf->topology_param, legacy_var) && + !xstrcasestr(conf->comm_params, legacy_var)) + xstrfmtcat(conf->comm_params, "%s%s", + conf->comm_params ? "," : "", legacy_var); + } if (!s_p_get_string(&conf->topology_plugin, "TopologyPlugin", hashtbl)) conf->topology_plugin = xstrdup(DEFAULT_TOPOLOGY_PLUGIN); diff --git a/src/common/slurm_protocol_api.c b/src/common/slurm_protocol_api.c index c96e008cf285793e7eb6bdedcf2608721e54aa27..d33ccc4fd043778c302d5669af7a060df5d500f7 100644 --- a/src/common/slurm_protocol_api.c +++ b/src/common/slurm_protocol_api.c @@ -5137,7 +5137,7 @@ extern void slurm_setup_sockaddr(struct sockaddr_in *sin, uint16_t port) * want to get just any address. This is the case on * a Cray system with RSIP. */ - char *topology_params = slurm_get_topology_param(); + char *comm_params = slurm_get_comm_parameters(); char *var; if (run_in_daemon("slurmctld")) @@ -5145,8 +5145,7 @@ extern void slurm_setup_sockaddr(struct sockaddr_in *sin, uint16_t port) else var = "NoInAddrAny"; - if (topology_params && - xstrcasestr(topology_params, var)) { + if (xstrcasestr(comm_params, var)) { char host[MAXHOSTNAMELEN]; if (!gethostname(host, MAXHOSTNAMELEN)) { @@ -5158,7 +5157,7 @@ extern void slurm_setup_sockaddr(struct sockaddr_in *sin, uint16_t port) } else s_addr = htonl(INADDR_ANY); - xfree(topology_params); + xfree(comm_params); } sin->sin_addr.s_addr = s_addr;