Skip to content

Commit 61fc148

Browse files
committed
Actually reschedule jobs for immediate runs
This looks up the appropriate schedulers for each incoming refresh request and asks them to reschedule the next job to run immediately. This still does not provide receipts to the event source, that will have to come later.
1 parent 2946c5e commit 61fc148

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

python/nav/ipdevpoll/schedule.py

+21
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,27 @@ def _handle_incoming_events():
576576
boxes_to_reschedule[(event.netbox_id, event.subid)].append(event)
577577
_logger.debug("boxes_to_reschedule: %r", boxes_to_reschedule)
578578

579+
_reschedule_jobs(boxes_to_reschedule)
580+
581+
582+
def _reschedule_jobs(boxes_to_reschedule: dict[tuple[int, str], list[EventQueue]]):
583+
job_schedulers = JobScheduler.get_job_schedulers_by_name()
584+
for (netbox_id, job_name), events in boxes_to_reschedule.items():
585+
first_event = events[0]
586+
job_scheduler = job_schedulers[job_name]
587+
netbox_scheduler = job_scheduler.active_netboxes[netbox_id]
588+
_logger.info(
589+
"Re-scheduling immediate %s run for %s as requested by %s",
590+
first_event.netbox,
591+
job_name,
592+
first_event.source,
593+
)
594+
# Ensure all re-scheduling happens in the main reactor thread:
595+
reactor.callFromThread(netbox_scheduler.reschedule, 0)
596+
# now we can safely delete all the events
597+
for event in events:
598+
event.delete()
599+
579600

580601
def _event_pre_filter(event: EventQueue):
581602
"""Returns True if this event is worthy of this process' attention. If the event

0 commit comments

Comments
 (0)