diff --git a/src/slurmctld/step_mgr.c b/src/slurmctld/step_mgr.c index 06eb37bb41c8b91317e8398336ff4071523ecd03..b6f988c6674194784499abec401a5bc36b80791d 100644 --- a/src/slurmctld/step_mgr.c +++ b/src/slurmctld/step_mgr.c @@ -308,24 +308,31 @@ delete_step_record (struct job_record *job_ptr, uint32_t step_id) ListIterator step_iterator; struct step_record *step_ptr; int error_code; + uint16_t cleaning = 0; xassert(job_ptr); error_code = ENOENT; if (!job_ptr->step_list) return error_code; - step_iterator = list_iterator_create (job_ptr->step_list); last_job_update = time(NULL); + step_iterator = list_iterator_create (job_ptr->step_list); while ((step_ptr = (struct step_record *) list_next (step_iterator))) { - if (step_ptr->step_id == step_id) { - list_remove (step_iterator); - _free_step_rec(step_ptr); - error_code = 0; + if (step_ptr->step_id != step_id) + continue; + + error_code = 0; + select_g_select_jobinfo_get(step_ptr->select_jobinfo, + SELECT_JOBDATA_CLEANING, + &cleaning); + if (!cleaning) /* Step clean-up already in progress. */ break; - } + list_remove(step_iterator); + _free_step_rec(step_ptr); + break; } + list_iterator_destroy(step_iterator); - list_iterator_destroy (step_iterator); return error_code; }