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)))))