This patchset does two things:
* It ensures that the narinfo creation is always done in a dedicated thread to
prevent blocking the main publish thread and cause the timeout connection
errors that some users experimented.
* It removes the cache bypass support and always renders temporary narinfo and
nar files during baking. This way, the first user asking for a substitute
won't get a 404 error. It also removes the need for Cuirass to pre-bake nar
files. Finally it will make way easier to use a publish server with caching
in a CI context.
The downside is that it makes the publish server code harder to understand and
that it consumes more server resources by duplicating the nar/narinfo file
In the long run, spawning new threads constantly won't scale. I think it would
be nice to rewrite the publish server using Fiber or an HTTP server framework.
Mathieu Othacehe (2):
publish: Defer narinfo string creation to the http-write.
publish: Remove cache bypass support.
doc/guix.texi | 15 -----
gnu/services/base.scm | 11 +---
guix/scripts/publish.scm | 136 +++++++++++++++++++++++----------------
tests/publish.scm | 88 +++----------------------
4 files changed, 93 insertions(+), 157 deletions(-)