• Dorian Krause's avatar
    set node state RESERVED on maint reservation delete · cf846644
    Dorian Krause authored
    we have hit the following problem that seems to be present in Slurm
    slurm-14-11-2-1 and previous versions. When a node is reserved and an
    overlapping maint reservation is created and later deleted the scontrol
    output will report the node as IDLE rather than RESERVED:
    
    + scontrol show node node1
    + grep State
       State=IDLE ThreadsPerCore=1 TmpDisk=0 Weight=1
    + scontrol create reservation starttime=now duration=120 user=usr01000
    nodes=node1 ReservationName=X
    Reservation created: X
    + sleep 10
    + scontrol show nodes node1
    + grep State
       State=RESERVED ThreadsPerCore=1 TmpDisk=0 Weight=1
    + scontrol create reservation starttime=now duration=120 user=usr01000
    nodes=ALL flags=maint,ignore_jobs ReservationName=Y
    Reservation created: Y
    + sleep 10
    + grep State
    + scontrol show nodes node1
       State=MAINT ThreadsPerCore=1 TmpDisk=0 Weight=1
    + scontrol delete ReservationName=Y
    + sleep 10
    + scontrol show nodes node1
    + grep State
    *   State=IDLE ThreadsPerCore=1 TmpDisk=0 Weight=1*
    + scontrol delete ReservationName=X
    + sleep 10
    + scontrol show nodes node1
    + grep State
       State=IDLE ThreadsPerCore=1 TmpDisk=0 Weight=1
    
    Note that the after the deletion of reservation "X" the State=IDLE
    instead of State=RESERVED. I think that the delete_resv() function in
    slurmctld/reservation.c should call set_node_maint_mode(true) like
    update_resv() does. With the patch pasted at the end of this e-mail I
    get the following output which matches my expectation:
    
    + scontrol show node node1
    + grep State
       State=IDLE ThreadsPerCore=1 TmpDisk=0 Weight=1
    + scontrol create reservation starttime=now duration=120 user=usr01000
    nodes=node1 ReservationName=X
    Reservation created: X
    + sleep 10
    + scontrol show nodes node1
    + grep State
       State=RESERVED ThreadsPerCore=1 TmpDisk=0 Weight=1
    + scontrol create reservation starttime=now duration=120 user=usr01000
    nodes=ALL flags=maint,ignore_jobs ReservationName=Y
    Reservation created: Y
    + sleep 10
    + scontrol show nodes node1
    + grep State
       State=MAINT ThreadsPerCore=1 TmpDisk=0 Weight=1
    + scontrol delete ReservationName=Y
    + sleep 10
    + scontrol show nodes node1
    + grep State
    *   State=RESERVED ThreadsPerCore=1 TmpDisk=0 Weight=1*
    + scontrol delete ReservationName=X
    + sleep 10
    + scontrol show nodes node1
    + grep State
       State=IDLE ThreadsPerCore=1 TmpDisk=0 Weight=1
    
    Thanks,
    Dorian
    cf846644
To find the state of this project's repository at the time of any of these versions, check out the tags.