Commit Graph

2589 Commits

Author SHA1 Message Date
2da4987bc2 Don't lock the CPU 2015-06-17 11:48:38 +02:00
b91a616520 Automatically retry aborted builds
Aborted builds are now put back on the runnable queue and retried
after a certain time interval (currently 60 seconds for the first
retry, then tripled on each subsequent retry).
2015-06-17 11:45:20 +02:00
e02654b3a0 Prefer cached failure over unsupported system type 2015-06-16 18:00:39 +02:00
a984c0badc Merge branch 'master' into build-ng 2015-06-15 18:21:07 +02:00
42e7301c08 Add status dump facility
Doing

  $ psql hydra -c 'notify dump_status'

will cause hydra-queue-runner to dump some internal status info on
stderr.
2015-06-15 18:20:14 +02:00
dd104f14ea Make the queue monitor more robust, and better debug output 2015-06-15 16:54:52 +02:00
147eb4fd15 Support requiredSystemFeatures 2015-06-15 16:33:50 +02:00
508ab7f8a2 Tweak build steps 2015-06-15 15:48:05 +02:00
21aaa0596b Fail builds with previously failed steps early 2015-06-15 15:31:42 +02:00
c00bf7cd1a Check non-runnable steps for unsupported system type 2015-06-15 15:13:03 +02:00
5019fceb20 Add a error type for "unsupported system type" 2015-06-15 15:07:04 +02:00
541fbd62cc Immediately abort builds that require an unsupported system type 2015-06-15 14:51:49 +02:00
bf87d3a6ed Use stable Nix 2015-06-15 14:51:38 +02:00
d6354cbe1f Fix Perl error in tests.api
Doing "su hydra" causes Perl to be invoked with a wrong PERL5LIB
(pointing to root's profile), leading to "Can't locate strict.pm".
2015-06-15 11:56:51 +02:00
abca7a87da Cleanup 2015-06-12 18:15:58 +02:00
f06ec78859 Handle building from a dirty Git tree 2015-06-12 18:15:58 +02:00
18e0a62e24 Disable 32-bit builds again
They're failing consistently:

http://hydra.nixos.org/job/hydra/master/build.i686-linux/all
2015-06-12 15:35:14 +02:00
f9cd5adae8 Queue monitor: Get only the fields we need 2015-06-11 18:09:50 +02:00
c974fb893b Support cancelling builds 2015-06-11 18:07:45 +02:00
c08883966c Use PostgreSQL notifications for queue events
Hydra-queue-runner now no longer polls the queue periodically, but
instead sleeps until it receives a notification from PostgreSQL about
a change to the queue (build added, build cancelled or build
restarted).

Also, for the "build added" case, we now only check for builds with an
ID greater than the previous greatest ID. This is much more efficient
if the queue is large.
2015-06-11 17:41:59 +02:00
672bbb1c67 hydra-update-gc-roots: Get Builds and BuildOutputs in the same query
This greatly reduces the number of roundtrips to the database.
2015-06-11 14:10:21 +02:00
9989a90e99 Keep the most recent successful build of current jobs
Fixes #140.
2015-06-11 14:10:21 +02:00
d72a88b562 Don't try to handle SIGINT
It just makes things unnecessarily complicated. We can just exit
without cleaning anything up, since the only thing to do is unmark
builds and build steps as busy. But we can do that by having systemd
call "hydra-queue-runner --unlock" from ExecStopPost.
2015-06-10 15:55:46 +02:00
a4fb93c119 Lock builds for a shorter amount of time 2015-06-10 15:36:21 +02:00
6d738a31bf Keep track of failed paths in the Hydra database
I.e. don't use Nix's failed paths feature anymore. Easier to keep
everything in one place.
2015-06-10 14:57:16 +02:00
c68036f8b0 Pass ssh key 2015-06-10 14:57:07 +02:00
7dd1f0097e Finish copyClosure 2015-06-09 16:03:41 +02:00
c93aa92563 Create BuildSteps race-free
If multiple threads create a step for the same build, they could get
the same "max(stepnr)" and allocate conflicting new step numbers. So
lock the BuildSteps table while doing this. We could use a different
isolation level, but this is easier.
2015-06-09 15:03:20 +02:00
61d4060522 Record the machine used for a build step 2015-06-09 14:57:49 +02:00
08633508da Fix colspan 2015-06-09 14:42:02 +02:00
ca1fbdd058 Mark builds as busy 2015-06-09 14:31:43 +02:00
8b12ac1f6d Basic remote building
This removes the need for Nix's build-remote.pl.

Build logs are now written to $HYDRA_DATA/build-logs because
hydra-queue-runner doesn't have write permission to /nix/var/log.
2015-06-09 14:21:21 +02:00
3a6cb2f270 Implement a database connection pool 2015-05-29 20:55:13 +02:00
214b95706c On SIGINT, shut down the builder threads
Note that they don't get interrupted at the moment (so on SIGINT, any
running builds will need to finish first).
2015-05-29 20:02:15 +02:00
bc36c7ddd0 hydra-module: Don't assume hydra is running on localhost.
In the long run we should add retry logic to hydra-init...
2015-05-29 12:16:04 -04:00
e778821940 Make concurrency more robust 2015-05-29 17:14:20 +02:00
8640e30787 Very basic multi-threaded queue runner 2015-05-29 01:31:12 +02:00
604fdb908f Pass null values to libpqxx properly 2015-05-28 19:06:17 +02:00
dc446c3980 Start of single-process hydra-queue-runner 2015-05-28 17:39:29 +02:00
a91cbefda0 Shut up warnings 2015-05-28 17:38:17 +02:00
ff8cb93fe7 reproduce.tt: Wrap script to prevent problems piping into bash 2015-05-26 17:11:29 +02:00
c32a244bd7 reproduce.tt: Add --print-flags option
Useful when scripting stuff (e.g. if you want to do a nix-instantiate
instead of a nix-build).
2015-05-26 16:36:08 +02:00
f5ecb7a81a reproduce.tt: Use -I instead of $NIX_PATH 2015-05-26 16:07:00 +02:00
b8a0956443 reproduce.tt: Add option to fetch but not build 2015-05-26 16:01:37 +02:00
91ecee0e5d Fix reproduce script 2015-05-26 15:54:38 +02:00
c93ff1e817 Doh 2015-05-26 15:25:21 +02:00
1ab0f96079 Rename c -> hydra-eval-jobs 2015-05-26 13:58:01 +02:00
880ba75a4f Merge pull request #216 from Warbo/master
Allow running on i686-linux
2015-05-17 14:01:37 -04:00
d64ba15357 Allow running on i686-linux 2015-05-17 18:41:27 +01:00
e003665146 Split timeSpent query into 2 separate queries, as postgresql isn't able to figure out a decent query plan. With 120k jobs in queue, this makes some queries go from 100s to 1-2s. 2015-05-01 12:28:29 +02:00