branch: main
commit 6cd1608e644a755dbbfd2937489061ed31eb8bbf
Author: Ludovic Courtès <l...@gnu.org>
AuthorDate: Wed Sep 18 16:50:25 2024 +0200

    remote-server: Remove periodic resumable/failed build updates.
    
    Fixes a bug introduced with de86524ddb4cef451fee81f680b53f719ea8e47a
    whereby builds marked as ‘failed-dependency’ by a worker due to a
    derivation with no corresponding build would eventually be rescheduled,
    leading to endless attempts to build the same derivation.
    
    * src/cuirass/scripts/remote-server.scm (spawn-periodic-updates-fiber):
    Remove callers.  Sleep for 10mn instead of 30s.
    * src/cuirass/database.scm (db-update-failed-builds!)
    (db-update-resumable-builds!): Remove.
---
 src/cuirass/database.scm              | 31 -------------------------------
 src/cuirass/scripts/remote-server.scm |  8 ++------
 2 files changed, 2 insertions(+), 37 deletions(-)

diff --git a/src/cuirass/database.scm b/src/cuirass/database.scm
index 7e929ac..4cf45db 100644
--- a/src/cuirass/database.scm
+++ b/src/cuirass/database.scm
@@ -172,8 +172,6 @@
             db-get-first-build-failure
             db-add-build-dependencies
             db-get-build-dependencies
-            db-update-resumable-builds!
-            db-update-failed-builds!
             db-register-builds
             db-update-build-status!
             db-update-build-worker!
@@ -1190,35 +1188,6 @@ WHERE id = ANY(" (list->sql-array dependents) ");"))))
         ;; Recurse.
         (loop (append-map db-get-build-dependents dependents))))))
 
-(define (db-update-resumable-builds!)
-  "Update the build status of the failed-dependency builds which all
-dependencies are successful to scheduled."
-  (with-db-connection db
-    (exec-query/bind db "
-UPDATE Builds SET status = " (build-status scheduled)
-" FROM (SELECT Builds.id, count(dep.id) as deps FROM Builds
-LEFT JOIN BuildDependencies as bd ON bd.source = Builds.id
-LEFT JOIN Builds AS dep ON bd.target = dep.id AND dep.status != 0
-WHERE Builds.status = " (build-status failed-dependency)
-" GROUP BY Builds.id HAVING count(dep.id) = 0) AS deps
- WHERE deps.id = Builds.id")))
-
-(define (db-update-failed-builds!)
-  "Update the build status of the scheduled builds with failed dependencies to
-failed-dependency."
-  (define now
-    (time-second (current-time time-utc)))
-
-  (with-db-connection db
-    (exec-query/bind db "
-UPDATE Builds SET status = " (build-status failed-dependency)
-", starttime = " now ", stoptime = " now
-" FROM (SELECT Builds.id, count(dep.id) as deps FROM Builds
-LEFT JOIN BuildDependencies as bd ON bd.source = Builds.id
-INNER JOIN Builds AS dep ON bd.target = dep.id AND dep.status > 0
-WHERE Builds.status = " (build-status scheduled)
-" GROUP BY Builds.id) AS deps WHERE deps.id = Builds.id")))
-
 (define (db-register-builds builds specification)
   (define (previous-build outputs)
     ;; Return the previous build producing OUTPUTS or #f if there is none.
diff --git a/src/cuirass/scripts/remote-server.scm 
b/src/cuirass/scripts/remote-server.scm
index f8f19da..6abfc98 100644
--- a/src/cuirass/scripts/remote-server.scm
+++ b/src/cuirass/scripts/remote-server.scm
@@ -380,12 +380,8 @@ requested received on its channel."
   (spawn-fiber
    (lambda ()
      (let loop ()
-       (let ((resumable (db-update-resumable-builds!))
-             (failed (db-update-failed-builds!))
-             (stale (db-reschedule-stale-builds)))
-         (log-info "periodic update: ~a resumable, ~a failed builds, ~a stale 
builds"
-                   resumable failed stale))
-       (sleep 30)
+       (db-reschedule-stale-builds)
+       (sleep 600)
        (loop)))))
 
 

Reply via email to