From c7d2db4e42794c09338639817a52bd8081ddafad Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Sat, 1 Apr 2023 17:24:25 +0200 Subject: [PATCH] fix(job-queue): use time as key for heaps --- src/job-queue/vieter_job_queue.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/job-queue/vieter_job_queue.c b/src/job-queue/vieter_job_queue.c index 0fd3c09..32621fc 100644 --- a/src/job-queue/vieter_job_queue.c +++ b/src/job-queue/vieter_job_queue.c @@ -60,7 +60,8 @@ vieter_job_queue_error vieter_job_queue_insert(vieter_job_queue *queue, } // We assume that the initial state is not a category heap - vieter_heap_insert(queue->heaps[VIETER_JOB_INITIAL_STATE].heap, job->id, job); + vieter_heap_insert(queue->heaps[VIETER_JOB_INITIAL_STATE].heap, + job->next_scheduled_time, job); job->current_state = VIETER_JOB_INITIAL_STATE; job->dispatched = false; @@ -124,10 +125,11 @@ vieter_job_queue_error vieter_job_queue_transition(vieter_job_queue *queue, } if (VIETER_JOB_STATE_IS_ARCH(new_state)) { - vieter_cat_heap_insert(queue->heaps[new_state].cat_heap, job->arch, job->id, - job); + vieter_cat_heap_insert(queue->heaps[new_state].cat_heap, job->arch, + job->next_scheduled_time, job); } else { - vieter_heap_insert(queue->heaps[new_state].heap, job->id, job); + vieter_heap_insert(queue->heaps[new_state].heap, job->next_scheduled_time, + job); } job->current_state = new_state; @@ -178,7 +180,8 @@ vieter_job_queue_error vieter_job_queue_fail(vieter_job_queue *queue, } // We assume the failure state is not categorized - vieter_heap_insert(queue->heaps[VIETER_JOB_FAILURE_STATE].heap, job->id, job); + vieter_heap_insert(queue->heaps[VIETER_JOB_FAILURE_STATE].heap, + job->next_scheduled_time, job); job->dispatched = false; job->state_transition_times[VIETER_JOB_FAILURE_STATE] = time(NULL);