Subject: Re: bug#33586: "updating substitutes" spam

From: [email-masked] (Ludovic Courtès)
Date: Tue, 04 Dec 2018 15:20:49 +0100

Ricardo Wurmus <[email-masked]> skribis:

> Taylan Kammer <[email-masked]> writes:
>
>> A minor issue, but I wanted to create a bug-report for this to make
>> sure it's on the radar.
>>
>> During updates, guix may print this message hundreds of times:
>>
>>     substitute: updating substitutes from 'http://...' 100%
>>
>> Repetitions of this message should probably be coalesced into a single
>> message.
>
> Each of these messages is for a different substitute query.  We are
> currently not showing the query, so it looks like the same work is done
> multiple times.
>
> The substitute queries are executed at different times.  Coalescing the
> messages would mean that the messages for previous queries are delayed
> until the last query is performed.  This would not be good.
>
> I don’t know if we can reorder the queries so that they all happen at
> once.

In the absence of grafts, the system is designed to perform all the
substitute queries at once (with HTTP pipelining and all.)  So you see
only one message.

However, the current implementation of grafts relies on substitutes
(when enabled) to determine whether a given package should be grafted.
Due to the way this is implemented, the resulted queries are not
coalesced, leading to these messages and, more importantly, poor network
usage (no pipelining, no connection reuse, etc.)

This is really a shortcoming of the current implementation of grafts,
much as discussed in <https://issues.guix.info/issue/28310>.

Thanks,
Ludo’.