Commit graph

275 commits

Author SHA1 Message Date
c650fc6e7a Rework inserting derivations
To add more parallelism.
2024-10-27 14:39:52 +00:00
1e0407e9b6 Use a common derivation-ids-hash-table
To allow for calling derivation-file-names->derivation-ids in parallel across
multiple fibers, using the PostgreSQL connection fiber to perform atomic
operations.
2024-10-27 14:39:52 +00:00
ff32aa899e Include the package version in the "error when computing" messages
As this helps when there are lots of packages with the same name.
2024-10-27 14:39:52 +00:00
052cf7580c Ensure the guix derivations are stored prior to attempting to substitute 2024-10-27 14:39:52 +00:00
d53b91dd91 Fix extract-information-from message 2024-10-27 14:39:52 +00:00
b6551842d1 Increase parallelism when loading revisions 2024-10-27 14:39:50 +00:00
f1071cbd4d Use a dedicated fiber for heap size monitoring 2024-10-27 14:38:50 +00:00
46b86761f5 Fix free-disk-space call
As the WAL file might not exist.
2024-10-13 19:12:09 +01:00
c04ea067c2 Make the WAL threshold more flexible
So that the WAL can grow more when there's sufficient space. When the
inferiors are closed it takes time to restart them, so doing this less should
speed up processing revisions.
2024-10-10 18:26:35 +01:00
fd7b0a341d Add retrying around inserting channel instance derivations 2024-08-29 09:38:44 +01:00
4ab59f46b4 Stop using profiles for channel instances
Just use the store item instead. This should avoid issues where the profile
gets GC'd.
2024-08-27 16:19:03 +01:00
c486db61f0 Further reduce the chunk size 2024-08-20 12:00:14 +01:00
122b63e131 Increase the WAL threshold 2024-08-20 10:31:20 +01:00
6de908d0f4 Increase the inferior idle seconds 2024-08-18 12:53:12 +01:00
3887435a7d Improve logging around use of inferiors 2024-08-17 18:31:32 +01:00
210e9a4775 Log the number of inferiors when reporting WAL issues
And reduce the threshold.
2024-08-16 21:18:23 +01:00
0592fba35b Check the WAL size more frequently when using inferiors
Since getting an inferior from the pool can take some time, it's not
sufficient to just check prior to attempting to fetch an inferior from the
pool. Instead set a timeout and check periodically.
2024-08-16 11:56:17 +01:00
c335775ed4 Check the WAL size before computing lint warnings
As even though this might not use the store, the inferior still holds a store
connection open.
2024-08-16 11:18:40 +01:00
eeda1bf33b Use system-ids for inserting distribution counts 2024-08-12 09:14:36 +01:00
b79c7e83be Reduce chunk size
To try and respond quicker when the WAL is growing.
2024-08-12 09:14:36 +01:00
97b76000ec Check the WAL size for each chunk
Rather than for each system and target, as this should mean the
response (pausing and allowing inferiors and store connections to be closed)
is quicker.
2024-08-12 09:14:36 +01:00
371d76456f Start trying to handle GC happening while processing revisions 2024-08-12 09:14:36 +01:00
7869082816 Parallelise inserting package derivation distribution counts 2024-08-10 18:28:53 +01:00
885a4758d3 Get the test suite working again 2024-08-07 17:21:49 +01:00
77962f7c2c Move inserting derivations in to the load-new-guix-revision module
And start to more closely integrate it. This makes it possible to start making
it faster by doing more in parallel.
2024-08-07 17:21:28 +01:00
7df7fd3e52 Compute package derivations in chunks
This allows for keeping the inferiors and store connections around for a more
constant period, and allows closing the store connections and allowing the
guix-daemon to clear the WAL file if needed.
2024-07-19 19:45:07 +01:00
ed4ba8eb95 Reduce the WAL size threshold 2024-07-19 19:44:53 +01:00
3f1c2ad603 Rewrite the key parts of loading data to be even more parallel
Use a pool for the database connection, and a fibers promise for the package
ids, and run other parts of the process in parallel too. This change also
means that inserting starts as soon as some data is available, rather than
when all the data is available.
2024-07-19 19:44:53 +01:00
587277f347 Insert package derivations earlier 2024-07-19 12:15:21 +01:00
2da3a195ea Return two values from channel->source-and-derivations-by-system 2024-07-19 11:50:14 +01:00
b8d9ed19b2 Avoid long running store connections
As I think this can cause the guix-daemon WAL to grow excessively.
2024-07-19 11:47:36 +01:00
0ca9c3f64f Catch and ignore the new cross build derivation errors 2024-07-18 13:58:21 +01:00
b22834dae7 Refactor opening store connections when processing jobs
And set the #:built-in-builders.
2024-07-18 13:57:50 +01:00
7da355b034 Log more timing infromation about inserting derivations 2024-07-16 16:07:47 +01:00
e37eb34db6 Block asyncs when starting inferiors
Because this code deals with global state, like environment variables.
2024-06-24 23:02:41 +01:00
31bd2156f7 Support setting environment variables in the inferior
When processing jobs, this is mostly to allow setting GUIX_DOWNLOAD_METHODS.
2024-06-24 23:02:14 +01:00
2043a4ef6f Fix WAL threshold
As it was too small.
2024-05-13 17:20:25 +01:00
824e731a5c Attempt to avoid the WAL growing excessively 2024-04-25 23:33:12 +01:00
4a09be753c Use non-blocking inferior-eval-with-store in for glibc-locales 2024-04-25 23:29:50 +01:00
993887fe0c Further change job store connection handling
The guix-dameon WAL is still growing excessively, so avoid doing anything with
the long running store connection except registering temporary roots.
2024-04-25 22:01:22 +01:00
88b9d34fb1 Close store connections earlier
As I think the temporary roots on the long running store connection should be
sufficient.
2024-04-15 13:43:37 +01:00
5f5b8fc91d Stop using a inferior-package-derivations lock
As this isn't for correctness reasons, but resource usage. I'm hoping to
manage this differently.
2024-03-31 19:55:46 +01:00
b4583bb177 Fallback when building channel instances 2024-03-13 15:34:48 +00:00
7d1cc4d325 Attempt to avoid issues with the guix-daemon WAL 2024-03-08 11:29:00 +00:00
5f80856ad1 Allow prioritising jobs from specific repositories
To help the QA data service prioritise branches over patches.
2024-03-07 10:02:18 +00:00
20ad81f0d4 Further fix handling exceptions when computing channel instances 2024-02-13 10:35:04 +00:00
26f517d9c2 Improve exception handling for channel instance derivations 2024-02-03 11:08:04 +01:00
ac1a4cb1e2 Cleanup some with-time-logging 2024-02-02 16:58:06 +01:00
7ecb13e403 Compute lint warnings in parallel 2024-02-01 13:16:08 +01:00
215a67238a Ignore inferior-protocol-error when computing channel instances
Since this seems to happen for i586-gnu for core-updates currently and I can't
seem to reproduce the issue locally or work out what's wrong.
2024-02-01 10:47:54 +01:00