diff --git a/src/slurmctld/ping_nodes.c b/src/slurmctld/ping_nodes.c index 126e13937e7a3c85785740f62d16a5c2741b21ec..e5d6a36a40a9c2f0e727e3fc06f920e2fe144eab 100644 --- a/src/slurmctld/ping_nodes.c +++ b/src/slurmctld/ping_nodes.c @@ -113,6 +113,7 @@ void ping_nodes (void) uint16_t base_state, no_resp_flag; hostlist_t ping_hostlist = hostlist_create(""); hostlist_t reg_hostlist = hostlist_create(""); + hostlist_t down_hostlist = NULL; char host_str[64]; int ping_buf_rec_size = 0; @@ -169,8 +170,11 @@ void ping_nodes (void) ((base_state != NODE_STATE_DOWN) && (base_state != NODE_STATE_COMPLETING) && (base_state != NODE_STATE_DRAINED))) { - error ("Node %s not responding, setting DOWN", - node_ptr->name); + if (down_hostlist) + (void) hostlist_push_host(down_hostlist, + node_ptr->name); + else + down_hostlist = hostlist_create(node_ptr->name); set_node_down(node_ptr->name, "Not responding"); continue; } @@ -271,6 +275,13 @@ void ping_nodes (void) } } + if (down_hostlist) { + hostlist_uniq(down_hostlist); + hostlist_ranged_string(down_hostlist, + sizeof(host_str), host_str); + error("Node %s not responding, setting DOWN", host_str); + hostlist_destroy(down_hostlist); + } hostlist_destroy(ping_hostlist); hostlist_destroy(reg_hostlist); }