diff options
author | Christopher Baines <mail@cbaines.net> | 2019-07-16 18:20:02 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2019-07-16 18:20:02 +0100 |
commit | 413ef9ea6eb867c93abbaa26ade7f00232e289c9 (patch) | |
tree | 35d683cc107eb51f8937f18848100c75c474706c /guix-data-service/jobs/load-new-guix-revision.scm | |
parent | 6904547bf2dc9dae516af3911b1dd967ae7d47a6 (diff) | |
download | data-service-413ef9ea6eb867c93abbaa26ade7f00232e289c9.tar data-service-413ef9ea6eb867c93abbaa26ade7f00232e289c9.tar.gz |
Prioritise processing the latest revisions for branches
Reserve some capacity to process revisions which are the tip of a branch. This
should reduce the time between new revisions appearing, and then being
processed.
Diffstat (limited to 'guix-data-service/jobs/load-new-guix-revision.scm')
-rw-r--r-- | guix-data-service/jobs/load-new-guix-revision.scm | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/guix-data-service/jobs/load-new-guix-revision.scm b/guix-data-service/jobs/load-new-guix-revision.scm index 24fada7..4779d9a 100644 --- a/guix-data-service/jobs/load-new-guix-revision.scm +++ b/guix-data-service/jobs/load-new-guix-revision.scm @@ -719,10 +719,21 @@ ORDER BY load_new_guix_revision_jobs.id DESC") (list id))) (define (fetch-unlocked-jobs conn) - (exec-query - conn - " -SELECT id FROM load_new_guix_revision_jobs + (define query " +SELECT + id, + commit IN ( + SELECT commit FROM ( + SELECT DISTINCT ON (name) + name, git_branches.commit + FROM git_branches + WHERE + git_branches.git_repository_id = load_new_guix_revision_jobs.git_repository_id AND + git_branches.commit IS NOT NULL + ORDER BY name, datetime DESC + ) branches_and_latest_commits + ) AS latest_branch_commit +FROM load_new_guix_revision_jobs WHERE succeeded_at IS NULL AND NOT EXISTS ( @@ -731,8 +742,16 @@ WHERE -- Skip jobs that have failed, to avoid trying them over and over again WHERE job_id = load_new_guix_revision_jobs.id AND event = 'failure' ) -ORDER BY id DESC -FOR NO KEY UPDATE SKIP LOCKED")) +ORDER BY latest_branch_commit DESC, id DESC +FOR NO KEY UPDATE OF load_new_guix_revision_jobs +SKIP LOCKED") + + (map + (match-lambda + ((id priority) + (list id + (string=? priority "t")))) + (exec-query conn query))) (define (process-load-new-guix-revision-job id) (with-postgresql-connection |