Avoid erroring when processing emails again

These changes allow processing emails again, and just creating job and branch
entries where data is missing.
This commit is contained in:
Christopher Baines 2019-08-05 20:59:48 +01:00
parent 712dd377a1
commit 9e80bda4f9
7 changed files with 84 additions and 5 deletions

View File

@ -630,12 +630,15 @@ WHERE job_id = $1"
"
INSERT INTO load_new_guix_revision_jobs (git_repository_id, commit, source)
VALUES ($1, $2, $3)
ON CONFLICT DO NOTHING
RETURNING id;")
(first
(exec-query conn
query
(list git-repository-id commit source))))
(match (exec-query conn
query
(list git-repository-id commit source))
((result)
result)
(() #f)))
(define (select-job-for-commit conn commit)
(let ((result

View File

@ -0,0 +1,25 @@
-- Deploy guix-data-service:remove_duplicate_load_new_guix_revision_jobs to pg
BEGIN;
DELETE FROM load_new_guix_revision_job_events WHERE job_id NOT IN (
SELECT MIN(id) FROM load_new_guix_revision_jobs
GROUP BY commit, git_repository_id
);
DELETE FROM load_new_guix_revision_job_logs WHERE job_id NOT IN (
SELECT MIN(id) FROM load_new_guix_revision_jobs
GROUP BY commit, git_repository_id
);
DELETE FROM load_new_guix_revision_jobs WHERE id NOT IN (
SELECT MIN(id) FROM load_new_guix_revision_jobs
GROUP BY commit, git_repository_id
);
CREATE UNIQUE INDEX ON load_new_guix_revision_jobs (
commit,
git_repository_id
);
COMMIT;

View File

@ -0,0 +1,7 @@
-- Revert guix-data-service:remove_duplicate_load_new_guix_revision_jobs from pg
BEGIN;
-- XXX Add DDLs here.
COMMIT;

View File

@ -17,3 +17,4 @@ load_new_guix_revision_job_logs 2019-06-21T14:33:09Z chris <chris@phact> # Add l
change_load_new_guix_revision_job_logs_contents_to_be_nullable 2019-07-07T20:10:54Z Christopher Baines <mail@cbaines.net> # Change the contents field in the load_new_guix_revision_job_logs table\nto be nullable.\n\nwith '#' will # be ignored, and an empty message aborts the add. #\nChange to add: # #\nchange_load_new_guix_revision_job_logs_contents_to_be_nullable #\nsqitch/deploy/change_load_new_guix_revision_job_logs_contents_to_be_nullable.sql\nsqitch/revert/change_load_new_guix_revision_job_logs_contents_to_be_nullable.sql\nsqitch/verify/change_load_new_guix_revision_job_logs_contents_to_be_nullable.sql
fix_duplicated_licenses 2019-07-30T05:48:17Z Christopher Baines <mail@cbaines.net> # Fix duplicated licenses, and add constraints
change_git_branches_primary_key 2019-08-05T18:57:41Z Christopher Baines <mail@cbaines.net> # Change the git_branches primary key to include the git_repository_id,\nas this will allow having the same branch in different repositories.
remove_duplicate_load_new_guix_revision_jobs 2019-08-05T19:06:36Z Christopher Baines <mail@cbaines.net> # Remove duplicate load_new_guix_revision_jobs

View File

@ -0,0 +1,7 @@
-- Verify guix-data-service:remove_duplicate_load_new_guix_revision_jobs on pg
BEGIN;
-- XXX Add verifications here.
ROLLBACK;

View File

@ -82,7 +82,24 @@
((id)
(process-load-new-guix-revision-job id))))))
(exec-query conn "TRUNCATE load_new_guix_revision_jobs CASCADE")))
(exec-query conn "TRUNCATE load_new_guix_revision_jobs CASCADE")
(test-assert "test duplicate job handling"
(with-postgresql-transaction
conn
(lambda (conn)
(enqueue-load-new-guix-revision-job
conn
(git-repository-url->git-repository-id conn "test-url")
"test-commit"
"test-source")
(enqueue-load-new-guix-revision-job
conn
(git-repository-url->git-repository-id conn "test-url")
"test-commit"
"test-source")
#t)
#:always-rollback? #t))))
(test-end)

View File

@ -22,6 +22,25 @@
id
(current-date)))
#t)
#:always-rollback? #t))
(test-assert "insert-git-branch-entry works twice"
(with-postgresql-transaction
conn
(lambda (conn)
(let* ((url "test-url")
(id (git-repository-url->git-repository-id conn url)))
(insert-git-branch-entry conn
"master"
"test-commit"
id
(current-date))
(insert-git-branch-entry conn
"master"
"test-commit"
id
(current-date)))
#t)
#:always-rollback? #t))))
(test-end)