diff --git a/src/common/slurm_route.c b/src/common/slurm_route.c index 251f0f264d74bae6d24f80228e33c615d63b2b6c..d035e401b7229506c2f4f482cab6754645951389 100644 --- a/src/common/slurm_route.c +++ b/src/common/slurm_route.c @@ -130,8 +130,8 @@ static void _set_collectors(char *this_node_name) char addrbuf[32]; int i, j, f; int hl_count = 0; - uint16_t port; - uint16_t slurmd_port; + uint16_t parent_port; + uint16_t backup_port; bool found = false; bool ctldparent = true; @@ -146,14 +146,14 @@ static void _set_collectors(char *this_node_name) * full list is split */ xassert(this_node_name); - slurmd_port = slurm_get_slurmd_port(); conf = slurm_conf_lock(); nodes = _get_all_nodes(); parent = strdup(conf->control_addr); if (conf->backup_addr) { backup = strdup(conf->backup_addr); } - port = conf->slurmctld_port; + parent_port = conf->slurmctld_port; + backup_port = parent_port; slurm_conf_unlock(); while (!found) { if ( route_g_split_hostlist(nodes, &hll, &hl_count) ) { @@ -178,10 +178,11 @@ static void _set_collectors(char *this_node_name) xfree(msg_collect_node); msg_collect_node = xmalloc(sizeof(slurm_addr_t)); if (ctldparent) - slurm_set_addr(msg_collect_node, port, parent); + slurm_set_addr(msg_collect_node, parent_port, + parent); else { slurm_conf_get_addr(parent, msg_collect_node); - msg_collect_node->sin_port = htons(port); + msg_collect_node->sin_port = htons(parent_port); } if (debug_flags & DEBUG_FLAG_ROUTE) { slurm_print_slurm_addr(msg_collect_node, @@ -195,12 +196,12 @@ static void _set_collectors(char *this_node_name) xmalloc(sizeof(slurm_addr_t)); if (ctldparent) { slurm_set_addr(msg_collect_backup, - port, backup); + backup_port, backup); } else { slurm_conf_get_addr(backup, msg_collect_backup); msg_collect_backup->sin_port = - htons(port); + htons(backup_port); } if (debug_flags & DEBUG_FLAG_ROUTE) { slurm_print_slurm_addr( @@ -225,7 +226,6 @@ static void _set_collectors(char *this_node_name) * We also know that the forwarding node is not a controller. * * clean up parent context */ - port = slurmd_port; ctldparent = false; hostlist_destroy(nodes); if (parent) @@ -247,6 +247,12 @@ static void _set_collectors(char *this_node_name) if (hostlist_count(nodes) > 1) backup = hostlist_nth(nodes, 1); } + parent_port = slurm_conf_get_port(parent); + if (backup) { + backup_port = slurm_conf_get_port(backup); + } else + backup_port = 0; + } clean: if (debug_flags & DEBUG_FLAG_ROUTE) {