• Lang Martin's avatar
    Delayed evaluations for `stop_after_client_disconnect` can cause unwanted... · 422493f3
    Lang Martin authored
    Delayed evaluations for `stop_after_client_disconnect` can cause unwanted extra followup evaluations around job garbage collection (#8099)
    
    * client/heartbeatstop: reversed time condition for startup grace
    
    * scheduler/generic_sched: use `delayInstead` to avoid a loop
    
    Without protecting the loop that creates followUpEvals, a delayed eval
    is allowed to create an immediate subsequent delayed eval. For both
    `stop_after_client_disconnect` and the `reschedule` block, a delayed
    eval should always produce some immediate result (running or blocked)
    and then only after the outcome of that eval produce a second delayed
    eval.
    
    * scheduler/reconcile: lostLater are different than delayedReschedules
    
    Just slightly. `lostLater` allocs should be used to create batched
    evaluations, but `handleDelayedReschedules` assumes that the
    allocations are in the untainted set. When it creates the in-place
    updates to those allocations at the end, it causes the allocation to
    be treated as running over in the planner, ...
    422493f3