diff --git a/src/slurmctld/read_config.c b/src/slurmctld/read_config.c index c58c5ef625a8404523d7869d19f8d7a5899ad666..0840929ae76a7a2a043d7633e9fca7f4bc66c9ec 100644 --- a/src/slurmctld/read_config.c +++ b/src/slurmctld/read_config.c @@ -821,13 +821,16 @@ static void _restore_node_state(struct node_record *old_node_table_ptr, node_ptr = find_node_record(old_node_table_ptr[i].name); if (node_ptr == NULL) continue; - node_ptr->node_state = old_node_table_ptr[i].node_state; - node_ptr->last_response = old_node_table_ptr[i].last_response; - node_ptr->cpus = old_node_table_ptr[i].cpus; - node_ptr->real_memory = old_node_table_ptr[i].real_memory; - node_ptr->tmp_disk = old_node_table_ptr[i].tmp_disk; - node_ptr->reason = old_node_table_ptr[i].reason; - old_node_table_ptr[i].reason = NULL; + node_ptr->node_state = old_node_table_ptr[i].node_state; + node_ptr->last_response = old_node_table_ptr[i].last_response; + node_ptr->cpus = old_node_table_ptr[i].cpus; + node_ptr->real_memory = old_node_table_ptr[i].real_memory; + node_ptr->tmp_disk = old_node_table_ptr[i].tmp_disk; + if(node_ptr->reason == NULL) { + /* Recover only if not explicitly set in slurm.conf */ + node_ptr->reason = old_node_table_ptr[i].reason; + old_node_table_ptr[i].reason = NULL; + } } }