diff --git a/src/plugins/sched/backfill/backfill.c b/src/plugins/sched/backfill/backfill.c index 22d21c8b4e8bd6d8841c40682ac0714e159bdb32..13bb5941bcf4ce5e5c8ce7b226df28373c5ee08a 100644 --- a/src/plugins/sched/backfill/backfill.c +++ b/src/plugins/sched/backfill/backfill.c @@ -727,7 +727,33 @@ static int _attempt_backfill(void) /* Determine impact of any resource reservations */ later_start = now; - TRY_LATER: FREE_NULL_BITMAP(avail_bitmap); + TRY_LATER: + if ((time(NULL) - sched_start) >= sched_timeout) { + uint32_t save_time_limit = job_ptr->time_limit; + job_ptr->time_limit = orig_time_limit; + if (debug_flags & DEBUG_FLAG_BACKFILL) { + END_TIMER; + info("backfill: completed yielding locks 2" + "after testing %d jobs, %s", + job_test_count, TIME_STR); + } + if (_yield_locks(1)) { + if (debug_flags & DEBUG_FLAG_BACKFILL) { + info("backfill: system state changed, " + "breaking out after testing %d " + "jobs", job_test_count); + } + rc = 1; + break; + } + job_ptr->time_limit = save_time_limit; + /* Reset backfill scheduling timers, resume testing */ + sched_start = time(NULL); + job_test_count = 1; + START_TIMER; + } + + FREE_NULL_BITMAP(avail_bitmap); FREE_NULL_BITMAP(exc_core_bitmap); start_res = later_start; later_start = 0;