diff --git a/src/slurmctld/backup.c b/src/slurmctld/backup.c index 8dd8bef7227f5876ac4d3350b735464f492c31df..cc2eebe512fff1aebd72dad47f9de754b65dfae0 100644 --- a/src/slurmctld/backup.c +++ b/src/slurmctld/backup.c @@ -125,6 +125,8 @@ void run_backup(void) pthread_kill(slurmctld_config.thread_id_sig, SIGTERM); pthread_join(slurmctld_config.thread_id_sig, NULL); + /* clear old state and read new state */ + job_fini(); if (read_slurm_conf(1)) /* Recover all state */ fatal("Unable to recover slurm state"); slurmctld_config.shutdown_time = (time_t) 0; diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c index d6d2d2adaaa899a1f72480b1ce799a8c3a0dfa9f..143d1afd0fed8cd003c0d43240624dcdc31f94fc 100644 --- a/src/slurmctld/job_mgr.c +++ b/src/slurmctld/job_mgr.c @@ -3115,8 +3115,10 @@ bool job_epilog_complete(uint32_t job_id, char *node_name, /* job_fini - free all memory associated with job records */ void job_fini (void) { - if (job_list) + if (job_list) { list_destroy(job_list); + job_list = NULL; + } xfree(job_hash); xfree(job_hash_over); } diff --git a/src/slurmctld/node_mgr.c b/src/slurmctld/node_mgr.c index d27efb20935957dba0d0f7b0eaefc94c36b53626..48e6731e39cf3e7faa5188aa3e2f9b3892664de3 100644 --- a/src/slurmctld/node_mgr.c +++ b/src/slurmctld/node_mgr.c @@ -1541,8 +1541,10 @@ void make_node_idle(struct node_record *node_ptr, /* node_fini - free all memory associated with node records */ void node_fini(void) { - if (config_list) + if (config_list) { list_destroy(config_list); + config_list = NULL; + } xfree(node_record_table_ptr); xfree(node_hash_table); } diff --git a/src/slurmctld/partition_mgr.c b/src/slurmctld/partition_mgr.c index 5bc4e3c2082ca8a7f436c6124a6b37c028ae8f91..052a4e69618fedb7dbd733bada6f0f62118199e0 100644 --- a/src/slurmctld/partition_mgr.c +++ b/src/slurmctld/partition_mgr.c @@ -923,6 +923,9 @@ static int _uid_list_size(uid_t * uid_list_ptr) /* part_fini - free all memory associated with partition records */ void part_fini (void) { - if (part_list) + if (part_list) { list_destroy(part_list); + part_list = NULL; + } + default_part_loc = (struct part_record *) NULL; }