guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: Move the builds.derivation_output_details_set_id


From: Christopher Baines
Subject: branch master updated: Move the builds.derivation_output_details_set_id update
Date: Sat, 16 Apr 2022 13:55:08 -0400

This is an automated email from the git hooks/post-receive script.

cbaines pushed a commit to branch master
in repository data-service.

The following commit(s) were added to refs/heads/master by this push:
     new 9607bce  Move the builds.derivation_output_details_set_id update
9607bce is described below

commit 9607bcedfe810681ea3fc76ceef4244583213b9b
Author: Christopher Baines <mail@cbaines.net>
AuthorDate: Sat Apr 16 18:47:54 2022 +0100

    Move the builds.derivation_output_details_set_id update
    
    To the end of the main revision processing transaction.
    
    Currently, I think there are issues when this query does update some builds,
    as those rows in the build table remain locked until the end of the
    transaction. This then causes build event submission to hang. Moving this 
part
    of the revision loading process to the end of the transaction should help to
    mitigate this.
---
 guix-data-service/jobs/load-new-guix-revision.scm | 10 +++++-----
 guix-data-service/model/build.scm                 | 22 +++++++++++++++-------
 2 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/guix-data-service/jobs/load-new-guix-revision.scm 
b/guix-data-service/jobs/load-new-guix-revision.scm
index c516a89..fbced1d 100644
--- a/guix-data-service/jobs/load-new-guix-revision.scm
+++ b/guix-data-service/jobs/load-new-guix-revision.scm
@@ -1401,10 +1401,6 @@ WHERE job_id = $1")
                      (inferior-data->package-derivation-ids
                       conn inf inferior-package-id->package-database-id
                       inferior-data-4-tuples))))
-              (update-builds-derivation-output-details-set-id
-               conn
-               (map fourth inferior-data-4-tuples))
-
               (insert-guix-revision-package-derivations conn
                                                         guix-revision-id
                                                         package-derivation-ids)
@@ -1513,7 +1509,11 @@ WHERE job_id = $1")
            (update-package-derivations-table conn
                                              git-repository-id
                                              guix-revision-id
-                                             commit))
+                                             commit)
+           (with-time-logging "updating 
builds.derivation_output_details_set_id"
+             (update-builds-derivation-output-details-set-id
+              conn
+              (string->number guix-revision-id))))
           (begin
             (simple-format #t "Failed to generate store item for ~A\n"
                            commit)
diff --git a/guix-data-service/model/build.scm 
b/guix-data-service/model/build.scm
index 30196eb..d6f911b 100644
--- a/guix-data-service/model/build.scm
+++ b/guix-data-service/model/build.scm
@@ -428,11 +428,10 @@ WHERE build_server_id = $1 AND build_server_build_id = 
$2")
     (_
      #f)))
 
-(define (update-builds-derivation-output-details-set-id conn 
derivation-file-names)
+(define (update-builds-derivation-output-details-set-id conn revision-id)
   (exec-query
    conn
-   (string-append
-    "
+   "
 UPDATE builds SET derivation_output_details_set_id = (
   SELECT derivations_by_output_details_set.derivation_output_details_set_id
   FROM derivations_by_output_details_set
@@ -440,10 +439,19 @@ UPDATE builds SET derivation_output_details_set_id = (
     ON derivations.file_name = builds.derivation_file_name
   WHERE derivations_by_output_details_set.derivation_id = derivations.id
 ) WHERE builds.derivation_output_details_set_id IS NULL AND
-        builds.derivation_file_name IN ("
-    (string-join (map quote-string derivation-file-names)
-                 ",")
-    ")")))
+        builds.derivation_file_name IN (
+  SELECT derivations.file_name
+  FROM derivations
+  INNER JOIN package_derivations
+    ON derivations.id = package_derivations.derivation_id
+  INNER JOIN guix_revision_package_derivations
+    ON package_derivations.id =
+       guix_revision_package_derivations.package_derivation_id
+  WHERE revision_id = $1
+)"
+   (list (number->string revision-id)))
+
+  #t)
 
 (define (select-derivations-by-output-details-set-id-by-derivation-file-name
          conn



reply via email to

[Prev in Thread] Current Thread [Next in Thread]