diff --git a/NEWS b/NEWS index e472a2a841222fc0c3de3425a0fb061f3bd124a1..9c2453e404852df3e5c2756713c6ed30c6a33373 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,11 @@ This file describes changes in recent versions of SLURM. It primarily documents those changes that are of interest to users and admins. +* Changes in SLURM 0.7.0-pre7 +============================= + -- Fix issue with NODE_STATE_COMPLETING, could start job on node before + epilog completed. + * Changes in SLURM 0.7.0-pre6 ============================= -- Added support for task affinity for binding tasks to CPUs (Daniel diff --git a/src/slurmctld/node_mgr.c b/src/slurmctld/node_mgr.c index 8482e189a5a7081ac102dd9c8441e4a20f7178b9..9ff28e7165200c154165f7f2d3d44ea5616224ea 100644 --- a/src/slurmctld/node_mgr.c +++ b/src/slurmctld/node_mgr.c @@ -1461,7 +1461,8 @@ static void _node_did_resp(struct node_record *node_ptr) xfree(node_ptr->reason); } base_state = node_ptr->node_state & NODE_STATE_BASE; - if (base_state == NODE_STATE_IDLE) { + if ((base_state == NODE_STATE_IDLE) + && ((node_flags & NODE_STATE_COMPLETING) == 0)) { bit_set (idle_node_bitmap, node_inx); bit_set (share_node_bitmap, node_inx); } @@ -1857,7 +1858,8 @@ void make_node_idle(struct node_record *node_ptr, node_ptr->node_state = NODE_STATE_ALLOCATED | node_flags; } else { node_ptr->node_state = NODE_STATE_IDLE | node_flags; - if ((node_flags & NODE_STATE_NO_RESPOND) == 0) + if (((node_flags & NODE_STATE_NO_RESPOND) == 0) + && ((node_flags & NODE_STATE_COMPLETING) == 0)) bit_set(idle_node_bitmap, inx); } } diff --git a/src/slurmctld/read_config.c b/src/slurmctld/read_config.c index 6169947405d3dce7719de4b8ee825c705eabde7a..ed2ef703ddc97425af181058ceb69986eabafbce 100644 --- a/src/slurmctld/read_config.c +++ b/src/slurmctld/read_config.c @@ -173,7 +173,7 @@ static int _build_bitmaps(void) job_cnt = node_record_table_ptr[i].run_job_cnt + node_record_table_ptr[i].comp_job_cnt; - if ((base_state == NODE_STATE_IDLE) + if (((base_state == NODE_STATE_IDLE) && (job_cnt == 0)) || (base_state == NODE_STATE_DOWN)) bit_set(idle_node_bitmap, i); if ((base_state == NODE_STATE_IDLE)