diff options
author | Christopher Baines <mail@cbaines.net> | 2020-06-01 18:48:58 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-06-01 18:48:58 +0100 |
commit | 16484c86f3b13024edc4833487961539b6058dd9 (patch) | |
tree | 55cda0a4bd251f49256cbbae8d5087c98de6e94a /guix-build-coordinator | |
parent | 2ac09243135c85d54e2ae2740d5c1aabe5c1ef06 (diff) | |
download | build-coordinator-16484c86f3b13024edc4833487961539b6058dd9.tar build-coordinator-16484c86f3b13024edc4833487961539b6058dd9.tar.gz |
Fix the builds with blocking counts
Don't just count the builds for directly related derivations, but indirectly
related ones as well.
Diffstat (limited to 'guix-build-coordinator')
-rw-r--r-- | guix-build-coordinator/datastore/sqlite.scm | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm index c0798e9..2b39c51 100644 --- a/guix-build-coordinator/datastore/sqlite.scm +++ b/guix-build-coordinator/datastore/sqlite.scm @@ -305,17 +305,21 @@ SELECT builds.uuid, builds.derivation_name, ( + WITH RECURSIVE related_derivations(name) AS ( + VALUES(builds.derivation_name) + UNION + SELECT derivation_inputs.derivation_name + FROM derivation_outputs + INNER JOIN related_derivations + ON derivation_outputs.derivation_name = related_derivations.name + INNER JOIN derivation_inputs + ON derivation_outputs.id = derivation_inputs.derivation_output_id + ) SELECT COUNT(DISTINCT blocked_builds.uuid) - FROM derivation_outputs - INNER JOIN derivation_outputs AS matching_derivation_outputs - ON derivation_outputs.output = matching_derivation_outputs.output - INNER JOIN derivation_inputs - ON matching_derivation_outputs.id = - derivation_inputs.derivation_output_id + FROM related_derivations INNER JOIN builds AS blocked_builds - ON derivation_inputs.derivation_name = blocked_builds.derivation_name - AND blocked_builds.processed = 0 - WHERE derivation_outputs.derivation_name = builds.derivation_name + ON related_derivations.name = blocked_builds.derivation_name + AND blocked_builds.processed = 0 ) FROM builds INNER JOIN build_results |