diff --git a/NEWS b/NEWS index db13f53f7bb13981af118a3091dd8773e2eb566f..ec3d030c0e410808674c5126e7eca1511c22e95d 100644 --- a/NEWS +++ b/NEWS @@ -307,6 +307,8 @@ documents those changes that are of interest to users and administrators. reason to 32 chars. -- Fix potential packing error when packing a NULL slurmdb_clus_res_rec_t. -- Fix potential packing errors when packing a NULL slurmdb_reservation_cond_t. + -- Burst_buffer/cray - Prevent slurmctld daemon abort if "paths" operation + fails. Now job will be held. * Changes in Slurm 16.05.9 ========================== diff --git a/src/plugins/burst_buffer/cray/burst_buffer_cray.c b/src/plugins/burst_buffer/cray/burst_buffer_cray.c index e7b04e00a1228483cbab738115b6159d19a05359..e5e8a61c4f8f2eee6978445c38081b02a445f420 100644 --- a/src/plugins/burst_buffer/cray/burst_buffer_cray.c +++ b/src/plugins/burst_buffer/cray/burst_buffer_cray.c @@ -3686,6 +3686,7 @@ extern int bb_p_job_begin(struct job_record *job_ptr) bb_state.bb_config.debug_flag) info("%s: paths ran for %s", __func__, TIME_STR); _log_script_argv(script_argv, resp_msg); + _free_script_argv(script_argv); #if 1 //FIXME: Cray API returning "job_file_valid True" but exit 1 in some cases if ((!WIFEXITED(status) || (WEXITSTATUS(status) != 0)) && @@ -3695,12 +3696,13 @@ extern int bb_p_job_begin(struct job_record *job_ptr) #endif error("%s: paths for job %u status:%u response:%s", __func__, job_ptr->job_id, status, resp_msg); + xfree(resp_msg); rc = ESLURM_INVALID_BURST_BUFFER_REQUEST; + goto fini; } else { _update_job_env(job_ptr, path_file); + xfree(resp_msg); } - xfree(resp_msg); - _free_script_argv(script_argv); /* Setup "pre_run" operation */ pre_run_argv = xmalloc(sizeof(char *) * 10); @@ -3743,8 +3745,9 @@ extern int bb_p_job_begin(struct job_record *job_ptr) usleep(100000); } slurm_attr_destroy(&pre_run_attr); -} + } +fini: xfree(client_nodes_file_nid); xfree(job_dir); return rc;